如果我输入一个角色',为什么这仍然会进入一个无限循环,提示我“”有多少人正在玩? (1-5):“?
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 :(得分:0)
一旦设置了cin.fail(),你需要在cin愿意再读之前用cin.clear()清除它。因此,它正在跳过您的读取请求,因为流不是“好”。
我想你想要一行
cin.clear(cin.rdstate() & ~ios_base::failbit);
cin.ignore();
你的if(cin.fail())块中的。