C++ 处理cin问题时出错。失败()

C++ 处理cin问题时出错。失败(),c++,error-handling,char,int,cin,C++,Error Handling,Char,Int,Cin,例如,如果我输入一个字符“s”,为什么它仍然进入一个无限循环,提示我“有多少人在玩?”?(1-5):“ int getnumplayers(){ int num_players=0; while(true){ 库特努姆球员; if(cin.fail()){ cout一旦设置了cin.fail(),您需要用cin.clear()清除它,然后cin才愿意再次读取。因此,它跳过了您的读取请求,因为流不“好” 我想你要排队 cin.clear(cin.rdstate() & ~ios_base:

例如,如果我输入一个字符“s”,为什么它仍然进入一个无限循环,提示我“有多少人在玩?”?(1-5):“

int getnumplayers(){
int num_players=0;
while(true){
库特努姆球员;
if(cin.fail()){
cout一旦设置了cin.fail(),您需要用cin.clear()清除它,然后cin才愿意再次读取。因此,它跳过了您的读取请求,因为流不“好”

我想你要排队

cin.clear(cin.rdstate() & ~ios_base::failbit);
cin.ignore();
在if(cin.fail())块中

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