我用这个字符串得到了一个无限的 while 循环

-2 c++ while-loop

所以我在这里得到了这部分代码:

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;
}
Run Code Online (Sandbox Code Playgroud)

问题是即使我给他一个正确的答案,比如“华硕”,它仍然给我错误信息:“你的输入错误”我该怎么办?

klu*_*utt 5

只是盲目猜测语法是行不通的。我建议stringparam != "ASUS" || "MSI" || "Gigabyte" || "ASrock"通过阅读有关运算符来了解真正的含义。

你可以做这样的事情来以一种非常简洁的方式实现你想要的。它需要 C++11 或更高版本。

std::set<std::string> ss = {"ASUS","MSI" , "Gigabyte","ASrock" };

while(ss.find(stringparam) == ss.end()) {
Run Code Online (Sandbox Code Playgroud)