2017-03-01 69 views
0

如果我輸入一個字符的'例如,爲什麼這仍然進入一個無限循環提示我「」有多少人在玩? (1-5):「錯誤處理問題與cin.fail()

int getnumplayers(){ 
    int num_players =0; 
    while(true){ 
     cout<<"How many people are playing? (1-5): "; 
     //cin.ignore(); 
     cin>>num_players; 

     if(cin.fail()){ 
      cout<<"hello"; 
     } 

     else if((num_players < 6 && num_players > 0)){ 
      break; 
     } 
    } 
    return num_players; 
} 

回答

0

一次cin.fail()設置,您需要cin.clear()來清除之前CIN願意再次讀取因此,這是你的請求跳過?用於讀取因爲流不是 「好」。

我想你想的線

cin.clear(cin.rdstate() & ~ios_base::failbit); 
cin.ignore(); 

你如果(cin.fail())塊。