限制用户输入

时间:2016-06-26 14:46:01

标签: c++ input enums switch-statement

我正在制作一个简单的程序,用户需要输入一些可能的字符。我希望可能的输入只有i,c,l,v,h,k,f,s,x。我意识到我可以做类似的事情:

%d

但是,我很确定有更优雅的解决方案。我猜是会涉及到枚举。有人会这么善意告诉我,因为我找不到关于这个主题的任何内容。

1 个答案:

答案 0 :(得分:3)

一个简单的解决方案可能是:

const string allowed{"iclvhkfsx"};
while (  cin.get(a) && allowed.find(a)== string::npos)
   cout << "Incorect input, try again ! ";

代码循环,直到输入有效的char(或达到eof)。

Online demo

通过使用basic_string<T>demo for integers),可以将此类解决方案推广到除字符之外的其他数据类型。当然,switch完全有效,但我认为只要不同的输入通常需要不同的处理,它的好处就更高。