if((tempTitle.find(tempTitleFind)))
{
blah blah
}
当我有部分匹配时,所有内容都会打印出来,而不仅仅是部分匹配的那个,我这里的论点是否有误?我一遍又一遍地查看它,似乎我找不到一个。我在这里做错了什么?
std::string::find
如果未找到则返回std::string::npos
,等于 -1。任何非 0 都等效于 boolean true
,因此您会得到“误报”。将条件更改为:
if(tempTitle.find(tempTitleFind) != std::string::npos)
tempTitle.find(tempTitleFind) 返回 tempTitleFind 在 tempTitle 中的位置,如果 tempTitleFind 没有出现在 tempTitle 中,则返回 std::string::npos。
要确定 tempTitleFind 是否出现在 tempTitle 中,您可以使用以下代码段:
if(tempTitle.find(tempTitleFind)!=std::string::npos)
{
...
}
顺便说一句:您应该在循环之前将 titleFind 转换为小写,而不是在循环内。