我正在制作一个简单的程序,用户需要输入一些可能的字符。我希望可能的输入仅为 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>
,这样的解决方案可以推广到字符以外的其他数据类型。 (demo for integers)。当然,switch
是完全有效的,但我认为当不同的输入通常需要不同的处理时,它的好处会更高。
关于c++ - 限制用户输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38039655/