3

我试图让 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--;
}

有什么建议么?

4

2 回答 2

15

你应该和 比较nposfind不返回布尔值。

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

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

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

于 2012-11-01T19:03:08.953 回答
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,否则返回您在字符串中找到它的位置

于 2012-11-01T20:35:58.143 回答