如何比较char或string变量是否等于某个字符串?

时间:2013-02-26 19:40:51

标签: c++ comparison string-comparison logical-operators

我正试图让这个循环工作但是出于某种原因,它会自动“假设”用户输入错误。

value是一个字符串(它应该是char吗?) 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;
}

3 个答案:

答案 0 :(得分:6)

在您的情况下,您应该使用&&代替||。目前,您的条件始终为真,因为Comp只能等于三个常量中的一个,但不能同时全部三个。

答案 1 :(得分:1)

作为其他发布解决方案的替代方案,有些人可能会认为这更具可读性:

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

另外,正如其他人所指出的那样,你可能打算:

cin >> Comp;

(因为您在Comp条件中使用value而不是while

答案 2 :(得分:0)

你在那里做的错误是在构建if块时在语言的日常使用中思考。正如其他人所回答的那样,您应该使用&&来获得正确的逻辑。