3

単語/文字が見つかった場合はブール値の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;

0falseつまり、部分文字列が index で見つかった場合にのみ返されます0

また、あなたの 2 番目の条件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 に答える