限制用户输入
Restricting user input
我正在制作一个简单的程序,其中用户需要输入几个可能的字符。我希望可能的输入只有I c l v h k f s x,我意识到我可以这样做
char a;
bool s(false);
cin>>a;
do
{
switch(a)
case 'i': ...
case 'c': ...
...
default: cout<<"Invalid input! Try again: "; cin>>a; s=true;
} while(s);
然而,我很确定有一个更优雅的解决方案。我猜会涉及到枚举。谁能好心告诉我一下,因为我找不到关于这个问题的任何资料。
一个简单的解决方案是:
const string allowed{"iclvhkfsx"};
while ( cin.get(a) && allowed.find(a)== string::npos)
cout << "Incorect input, try again ! ";
代码循环,直到输入一个有效的字符(或达到eof)。
在线演示这样的解决方案可以通过使用basic_string<T>
(整数的演示)推广到字符以外的其他数据类型。当然,switch
是完全有效的,但我认为当不同的输入通常需要不同的处理时,它的好处会更高。
相关文章:
- C++如何通过用户输入删除列表元素
- 创建一个函数以在输入为负数或零时输出字符串.第一次执行用户定义的函数
- 如何使用用户输入在C++中正确填充2D数组
- C++MySQL C api用户输入行
- 用户定义函数中的指针和输入
- 如何只允许用户输入正整数
- C++如何计算用户输入的数字中的偶数位数
- 通过for循环使用用户输入填充列表
- 这是我尝试让用户将值输入到数组中.然后将其隐藏为大量的星号
- 在C++中,我如何接受不同于同一行的用户输入
- 如果用户输入无效,如何使用字符串变量-C++重复输入命令
- 当用户键入分隔符时,停止getline()输入
- 通过错误处理,在C++中可靠地获得用户十六进制输入
- 当用户在qtablewidget中输入单元格时,如何获得信号?C++
- 显示基于用户输入的整数的字符
- 根据用户输入用字母填充矢量,并将"开始"和"结束"放在四肢
- 我试图制作一个程序,要求用户输入问题和答案,但程序循环不正确
- 如果用户没有输入任何内容或输入错误,如何重新输入用户的输入?
- 为什么在代码块中执行时会跳过输入用户输入的行?
- 使用 for 循环在数组中输入用户