2015-12-22 78 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