0
                    if((tempTitle.find(tempTitleFind)))
                    {
                      blah blah

                    }

当我有部分匹配时,所有内容都会打印出来,而不仅仅是部分匹配的那个,我这里的论点是否有误?我一遍又一遍地查看它,似乎我找不到一个。我在这里做错了什么?

4

2 回答 2

3

std::string::find如果未找到则返回std::string::npos,等于 -1。任何非 0 都等效于 boolean true,因此您会得到“误报”。将条件更改为:

if(tempTitle.find(tempTitleFind) != std::string::npos)
于 2013-02-13T07:58:48.480 回答
0

tempTitle.find(tempTitleFind) 返回 tempTitleFind 在 tempTitle 中的位置,如果 tempTitleFind 没有出现在 tempTitle 中,则返回 std::string::npos。

要确定 tempTitleFind 是否出现在 tempTitle 中,您可以使用以下代码段:

if(tempTitle.find(tempTitleFind)!=std::string::npos)
{
...
}

顺便说一句:您应该在循环之前将 titleFind 转换为小写,而不是在循环内。

于 2013-02-13T08:02:51.817 回答