带有选择的菜单列表

Menu list with choices

本文关键字:列表 菜单 有选择      更新时间:2023-10-16

我正在尝试在程序中列出一个选择列表,现在我会遇到用户写入不正确输入时发生的情况。

我尝试使用 do 循环(我已经循环开关语句(进行操作。另外,尝试将变量设置为整数和char,但都有问题。 char 仅拿一个字符,当您编写多个字符时,它会开始自行检查每个字符。使用 int 我在输入错误时会获得菜单函数的无限循环。

另外,我在stackoverflow中找到了使用 cin.fail((的尝试,但它没有奏效。

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 = '';
        menu();
        break;
    }
}
}

如果需要:https://pastebin.com/xv1he0mh

使用一个尝试键入块。使用dectType或typeof功能查看输入是整数。

我确定为什么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.
.
}