if((tempTitle.find(tempTitleFind)))
{
blah blah
}
当我有一个部分匹配时,所有内容都打印而不是只有部分匹配的那个,我在这里有错误吗?我一遍又一遍地看着它,好像我找不到一个。我在这里做错了什么?
答案 0 :(得分:3)
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转换为小写,而不是在
之内。