2013-02-26 89 views
1

我試圖讓while循環工作,但由於某種原因,它會自動「假設」用戶輸入錯誤。如何比較char或string變量是否等於某個字符串?

value是一個字符串(它應該是一個字符?) ABC是字符串(他們應該是char?)

void Course::set() 
{ 
    cout << "blah blah blah" << endl; 
    cout << "youre options are A, B, C" <<endl; 
    cin >> value; 

    while(Comp != "A" || Comp != "B" || Comp != "C") 
    { 
     cout << "The character you enter is not correct, please enter one of the following: You're options are A, B, C" << endl; 
     cin >> value; 
    } 
    cout << endl; 
} 
+2

不,他們不應該是'char','std :: string'很棒。 – 2013-02-26 19:46:51

回答

6

你應該在你的條件使用&&而不是|| 。目前,您的條件是總是爲真,因爲Comp只能等於三個常量中的一個,但不能同時全部三個。

+1

另外,他正在閱讀「價值」,而不是「比較」。 – StilesCrisis 2013-02-26 20:27:50

0

您在那裏犯的錯誤是想在日常使用語言,同時建立if塊。正如其他人回答的那樣,您應該使用&&作爲正確的邏輯。

1

作爲替代其他發佈的解決方案,有些人可能認爲這更可讀:

while(! (Comp == "A" || Comp == "B" || Comp == "C")) 
{ 
    // do something 
} 

而且,正如其他人所指出的那樣,你可能是打算:

cin >> Comp; 

(既然你在你的while條件下使用Comp而不是value。)

+0

這也是一個好主意!我需要嘗試一下 – booky99 2013-02-27 01:57:04

相關問題