String.find始终返回true(C ++)

时间:2012-11-01 19:02:09

标签: c++ boolean

我试图让boolean found_word在找到单词/字符时返回true,如果不找到则返回false,但无论我在文本中写什么,它都会返回true。循环本身有效,已经尝试过了。包括IOStream和字符串。

while(timestorun){
    found_word = text.find("khgdawjugfdjhawbdjkhsadgawkdsa");

    if(found_word){
        cout << "FOUND!!!" << endl;
    }
    else if(!found_word){
        cout << "Found problem!!!!!"<< endl;
    }
    timestorun--;
}

有什么建议吗?

2 个答案:

答案 0 :(得分:14)

你应该与npos进行比较。 find不返回布尔值。

found_word = text.find("khgdawjugfdjhawbdjkhsadgawkdsa") != std::string::npos;

0false,只有在索引0找到子字符串时才会返回。

此外,您的第二个条件是多余的 - 如果found_wordfalse,我个人保证!found_word将为true

答案 1 :(得分:1)

它应该是更像这样的东西:

int main ()
{
    int found = text.find("some text");
    if (found != std::string::npos)
    {
        //do stuff if word is there
    }
    else
    {
        //do stuff when word isnt there
    }
}
如果单词不在那里,

text.find应该返回-1,否则它返回你找到它的字符串中的位置