我有一个简单的 c++ 程序,它有一个菜单,允许用户选择一个带有数字的选项。还有一个代码块可以确保用户的输入是有效的,但是,当我输入一个字母(“s”)时。我没有显示错误消息然后允许用户输入有效响应,而是收到相同错误消息的无限循环。代码:
#include <iostream>
#include <algorithm>
using namespace std;
int main(){
const string PROMPT = ">> ";
int options[3] = {1, 2, 3};
int option;
// Display menu
cout << "MENU" << endl
<< "1\tAdult Tickets" << endl
<<"2\tStudent Tickets" << endl
<< "3\t2 Adults, 2 Children Tickets" << endl << endl;
// Getting option from the user and validating it
do {
// Prompt for input and get option from user
cin >> option;
// Displaying appropriate error messages
if (!isdigit(option)){
// Invalid data type
cout << "This is not a valid number!" << endl;
// Not on the options menu
} else if (!(find(options, options + sizeof(options)/ sizeof(options[0]), option))){
cout << "This option is not on the menu!" << endl;
}
} while (!isdigit(option) || !(find(options, options + sizeof(options)/ sizeof(options[0]), option)));
return 0;
}
这是我输入“s”时的输出示例
这不是一个有效的号码 这不是一个有效的号码!这不是一个有效的号码!这不是一个有效的号码!这不是一个有效的号码!这不是一个有效的号码!这不是一个有效的数字!...
任何帮助将不胜感激,并提前感谢您。