我现在有一个非常奇怪的问题,那就是我的||
- 条件不能正常工作
这是我的代码:
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时,它将我带入了不应发生的循环 知道如何解决这个问题吗?
答案 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"))