2013-05-22 264 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

相關問題