当数据无效或数据不是1、2、3或4时,如何创建防止进入失败状态的条件语句并要求用户提供新数据?
int choice;
while ( !choice || choice != 1 || 2 || 3 || 4){
cout << "Entry Invalid. Enter again: ";
cin >> choice
}
例如,如果用户输入“ f”,则将处理失败状态,并且程序将请求新数据。当他们输入5时,程序会说“无效数字”,并要求输入新数据。
答案 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;