6

私の場合、2 つの文字列が同じかどうかを確認する必要があります。私が得ている問題は、何を入力しても、何を入力しても真の値が得られるということです。

bool Dictionary::checkIfWordExists(string input){
for(int counter=0;counter<234;counter++){
    if(input.compare(getWordFromDictionary(counter))){
        return true;
    }
}
return false;}

テスト目的で、このような do ループを使用して、ロードした Dictionary.txt ファイルと比較してテストする内容を入力しました。

do{
    cout<<"enter something you sexy beast"<<endl;
    string test;
    cin>>test;
    if(loadedDictionary.checkIfWordExists(test)){
        cout<<"yes"<<endl;
    }else{
        cout<<"no"<<endl;
    }
}while(true);
4

3 に答える 3

22

これは0、文字列が等しい場合に比較が実際に返されるためです。文字列が等しくない場合は、ご覧のとおり、より高いまたはより低い値を返し、if は true と評価されます。

Java や C# などの言語ではequals、非プリミティブを比較するようなメソッドを使用するのが一般的ですが、C++ では==.

于 2013-05-22T16:06:24.003 に答える