2013-05-22 215 views
1

对于我的情况,我必须检查2个字符串是否相同。在万阿英,蒋达清我得到是,不管我投入,我得到一个真正的价值,无论是我插嘴说。检查字符串是否相同C++

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

出于测试目的,我用这样的做回路输入的东西与我加载的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); 

回答

15

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

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

+0

谢谢你......当我的问题很简单时,我觉得自己很迟钝。 Ahaha –

+5

我认为值得注意的是,使用'=='运算符会比compare()函数更清晰和更正确。 –

2

应该有operator==std::string可用于更自然的感觉比较。

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

你需要明确的compare结果与0比较。这里是返回值的含义:

0 =>在比较字符串相等

< 0 =>要么不匹配的第一个字符的值是 比较字符串中较低,或所有比较字符匹配,但比较字符串为 更短。

> 0 => 比较字符串中第一个不匹配的字符的值较大,或者所有比较的字符都匹配,但比较的字符串长度为 。

在这里查看关于std::string::compare的详细解释。

+0

嗯,你的“看到这里”实际上并没有指向任何东西。 – starbeamrainbowlabs

+0

谢谢@starbeamrainbowlabs:我更新了链接。 – yasouser

相关问题