gpt4 book ai didi

c++ - cin.fail()的错误处理问题

转载 作者:行者123 更新时间:2023-12-03 08:50:25 29 4
gpt4 key购买 nike

例如,如果我输入一个字符“s”,为什么仍然进入无限循环,提示我输入“”,有多少人在玩? (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;
}

最佳答案

设置了cin.fail()后,您需要先使用cin.clear()清除它,然后cin才愿意再次读取。因此,它会跳过您的读取请求,因为流不是“好”。

我想你想要线

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

在您的if(cin.fail())块中。

关于c++ - cin.fail()的错误处理问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42523544/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com