我试图在一个程序中创建一个选择列表,现在我已经陷入了当用户写入错误输入时发生的事情。
我已经尝试使用 do 循环(我已经循环切换语句)。另外,尝试将变量 key 设置为integer和char,但两者都有问题。 Char 只占用一个字符,当你编写多个字符时,它会自动开始检查。使用 int 输入错误时,我得到 menu 函数的无限循环。
另外,尝试使用我在这里找到的 cin.fail(),在stackoverflow中,但它没有成功。
void menu()
{
if(!isEmpty())
{
showStack();
}
else
{
cout << "stekas tuscias!" << endl;
}
cout << "---------------------------" << endl;
cout << "1. Iterpti i steka (push)" << endl;
cout << "2. Pasalinti is steko (pop)" << endl;
cout << "3. Issaugoti steka" << endl;
cout << "4. Issaugoti steka ir uzdaryti programa" << endl;
cout << "---------------------------" << endl;
cout << "Jusu pasirinkimas: ";
char key;
cin >> key;
switch(key)
{
case '1':
{
cout << "Irasykite reiksme i konsole: ";
int data;
cin >> data;
cout << endl;
push(data);
break;
}
case '2':
{
cout << endl;
pop();
break;
}
case '3':
{
write();
cout << "--------" << endl;
cout << "Stekas issaugotas!" << endl;
cout << "--------" << endl;
menu();
break;
}
case '4':
{
write();
break;
}
default:
{
cout << "Tokio pasirinkimo nera!" << endl;
cout << endl;
key = '\0';
menu();
break;
}
}
}
我的全部代码如果需要:https://pastebin.com/Xv1HE0Mh
答案 0 :(得分:0)
使用try-catch-throw块。使用decltype或typeof功能查看输入是否为整数。
答案 1 :(得分:0)
我确定为什么cin.fail()或(!cin)不适合你。但是,你可以做到这一点。而且,我也确定存在这样的问题。
template <class T>
int check (T ch)
{
if (ch >= 'a' && ch <= 'Z') return 0;
else return 1;
}
然后。
main ()
{
.
.
char c;
cin.get (c); //Note here!!
if (check (c)) {...}
else {...} //You can use goto.
.
}