2017-03-01 70 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())块。