簡體   English   中英

cin.fail()的錯誤處理問題

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM