2013-02-26 33 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

相关问题