限制用户输入

Restricting user input

本文关键字:输入 用户      更新时间:2023-10-16

我正在制作一个简单的程序,其中用户需要输入几个可能的字符。我希望可能的输入只有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是完全有效的,但我认为当不同的输入通常需要不同的处理时,它的好处会更高。