检查字符串是否与c ++相同

时间:2013-05-22 16:05:03

标签: c++ string compare

对于我的情况,我必须检查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);

3 个答案:

答案 0 :(得分:18)

这是因为当字符串相等时,compare实际返回0。如果字符串不相等,它将返回一个更高或更低的值,if将评估为true,如您所见。

在Java和C#等语言中,使用equals之类的方法比较非基元是很常见的,但在C ++中,最好只使用==

答案 1 :(得分:1)

operator==应该std::string可以进行更自然的比较。

if(input == getWordFromDictionary(counter)) { ... }

答案 2 :(得分:0)

您需要明确比较compare0的结果。以下是返回值的含义:

0 =&gt;比较的字符串相等

&lt; 0 =&gt;不匹配的第一个字符的值低于        比较字符串,或所有比较的字符匹配,但比较的字符串是        短。

&gt; 0 =&gt;要么不匹配的第一个字符的值更大         比较字符串,或所有比较的字符匹配,但比较的字符串是         更长的时间。

有关std::string::compare的详细说明,请参阅此处。