[英]Error Handling issue with cin.fail()
例如,如果輸入一個字符“ 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())塊中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.