如何检查用户输入的内容是否有效以及我要查找的数字?

时间:2018-09-16 00:21:33

标签: c++ while-loop conditional

当数据无效或数据不是1、2、3或4时,如何创建防止进入失败状态的条件语句并要求用户提供新数据?

int choice;

while ( !choice || choice != 1 || 2 || 3 || 4){
     cout << "Entry Invalid. Enter again: ";
     cin >> choice
}

例如,如果用户输入“ f”,则将处理失败状态,并且程序将请求新数据。当他们输入5时,程序会说“无效数字”,并要求输入新数据。

2 个答案:

答案 0 :(得分:0)

对于stoi,您需要C ++ 11标准

int choice;
string inp;

cin >> inp;

while(inp != "1" && inp != "2" && inp !="3" && inp !="4"){

    cout << "Wrong input , type again" << endl;
    //system("PAUSE");
    cin >> inp;

}
choice = stoi(inp);
cout << choice;

答案 1 :(得分:0)

这个确切的问题在第一年给我带来了太多麻烦。这应该做您想要的,也许尝试实现最大次数的失败尝试。

int choice = 0;
while (true) {
    cout << "Please enter a number between 1 and 4" << endl;
    cin >> choice;
    if (cin.fail()) {
        cout << "Invalid input" << endl;
        cin.clear();
        cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
    }
    else if (choice < 1 || choice > 4) {
        cout << "Not a valid number" << endl;
    }
    else {
        break;
    }
}
cout << "You chose " << choice << endl;