如何检查用户的输入是否有效以及我正在寻找的数字?

问题描述 投票:0回答:2

如何创建阻止进入失败状态的条件语句,并在数据无效或数据不是1,2,3或4时向用户询问新数据?

int choice;

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

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

c++ while-loop conditional
2个回答
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;

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;
© www.soinside.com 2019 - 2024. All rights reserved.