C ++ OR条件无法正常工作

时间:2015-05-01 08:36:20

标签: c++

我现在有一个非常奇怪的问题,那就是我的|| - 条件不能正常工作 这是我的代码:

cout << "Please enter type: "; 
    cin.ignore();
    std::getline(std::cin, type);
    transform(type.begin(), type.end(), type.begin(),::toupper);
    cout << type << endl;
        if (type != "TYPE B" || type != "B"){   
            cout << "Please re-enter type: ";

            std::getline(std::cin, type);

            }
        }

当我输入值b或键入b时,它将我带入了不应发生的循环 知道如何解决这个问题吗?

2 个答案:

答案 0 :(得分:3)

这将永远为真,您将被要求重新输入类型。

您想要&&而不是|| - 如果不是"TYPE B" 它也不是"B",您想要重新输入该类型

答案 1 :(得分:1)

type != "TYPE B" || type != "B"表达式始终为真。无论type是什么,它都不能等于两个彼此不相等的字符串。

如果目的是仅允许"B""TYPE B"字符串,请使用&&,就像这样

if (type != "TYPE B" && type != "B")

或否定OR的结果,如下所示:

if (!(type == "TYPE B" || type == "B"))