找功能打印一切?

时间:2013-02-13 07:55:34

标签: c++ find

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

                    }

当我有一个部分匹配时,所有内容都打印而不是只有部分匹配的那个,我在这里有错误吗?我一遍又一遍地看着它,好像我找不到一个。我在这里做错了什么?

2 个答案:

答案 0 :(得分:3)

如果找不到,则{p> std::string::find会返回std::string::npos,并且等于-1。任何不为0的东西都相当于一个布尔true,所以你会得到“误报”。将条件更改为:

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

答案 1 :(得分:0)

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

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

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

BTW:你应该在循环之前将titleFind转换为小写,而不是在

之内。