我试图让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--;
}
有什么建议吗?
答案 0 :(得分:14)
你应该与npos
进行比较。 find
不返回布尔值。
found_word = text.find("khgdawjugfdjhawbdjkhsadgawkdsa") != std::string::npos;
0
,false
,只有在索引0
找到子字符串时才会返回。
此外,您的第二个条件是多余的 - 如果found_word
为false
,我个人保证!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,否则它返回你找到它的字符串中的位置