2015-12-22 79 views
0

我的程序在char中输入。然后检查输入是否有效得到字符输入,检查它是否有效,如果无效清除整个输入

如果输入的不是'a'或'b'或'c',请清除整个输入的输入然后重新输入(并且任何超过一个字符的输入即使开始时也是无效的或包括a或b或c字符)

示例:ab,ac,cb,abc无效。 xa,habc无效

所以我的问题是:例如:如果我输入像abcdef或123456(在这个例子中输入有6个字符)输入循环变成6次,并打印“错误!无效值,再试一次”6倍。但对于长度超过1个字符的任何输入,它只能打印“错误!无效值,请重试”。我认为它分别检查输入是否有效,然后分别对b,c,d,e和f进行检查。所以如果输入无效,则应该清除整个输入,然后再次输入。如果无效,我如何清除整个输入。这里是我的代码

for(bool isTypeValid=false; isTypeValid==false;){ 
     cout<<"type: "; 
     cin>>type; 

     switch(type){ 
      case 'a': 
      case 'b': 
      case 'c': 
       isTypeValid=true; 
       break; 
      default: 
       isTypeValid=false; 
       cout<<"Error! Invalid type. Try again."; 
       break;} 
    } 
int number: 
cout<<"number: "; 
cin>>number; 

............. 

编辑:我只需要使用iostream头

回答

0

你的程序通过线接收输入线。你可以用std::getlinestd::istream::getline来读取整行,并检查第一个字符。

+0

我忘了提及。我只需要使用iostream头文件 –

+0

'operator <<'和'getline'都位于'istream'头文件中。 – roeland

+0

@sinyorcem你不允许使用'string'头文件吗? – roeland