首页 > 解决方案 > 我用这个字符串得到了一个无限的while循环

问题描述

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

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;
}

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

标签: c++while-loop

解决方案


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

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

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

while(ss.find(stringparam) == ss.end()) {

推荐阅读