【发布时间】:2021-05-05 03:20:18
【问题描述】:
所以我在这里得到了这部分代码:
string stringparam;
string stringparam1;
double d;
unsigned x;
cout << "Welcome" << endl;
cout << "Choose one (ASUS, MSI, Gigabyte, ASrock)" << endl;
cin >> stringparam;
while (stringparam != "ASUS" || "MSI" || "Gigabyte" || "ASrock")
{
cout << "you gave bad input \n" << endl;
cout << "Choose one (ASUS, MSI, Gigabyte, ASrock)" << endl;
cin >> stringparam;
}
问题是即使我给他一个正确的答案,比如“华硕”,它仍然给我错误信息:“你输入错误” 我该怎么办?
【问题讨论】:
-
stringparam != "ASUS" || "MSI" || "Gigabyte" || "ASrock"不会像您认为的那样做。与(stringparam != "ASUS") || "MSI" || "Gigabyte" || "ASrock"相同,"MSI"始终为真。你想要stringparam != "ASUS" && stringparam != "MSI" && ...。 -
只是盲目地猜测语法是行不通的。通过阅读运算符了解
stringparam != "ASUS" || "MSI" || "Gigabyte" || "ASrock"的真正含义。 -
这是我能找到的最接近的:stackoverflow.com/questions/28144294/…。你的条件是:"(stringparam is not "ASUS") or ("MSI") or ..." not "stringparam is not ("ASUS" or "MSI" or ...)"
-
or无论如何都是错误的运算符,即使您解决了不比较字符串的更明显问题。逻辑或与自然口语中使用的or非常不同。 -
感谢大家的快速响应,我会尝试多看一看
标签: c++ while-loop