c++ - if(! cin ) 是什么意思 有什么作用
大家讲道理
大家讲道理 2017-04-17 14:57:46
0
2
734

if(! cin ) 是什么意思,有什么作用,应该怎么用

大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

全部回覆(2)
伊谢尔伦

std::basic_ios中定義了operator bool

explicit operator bool() const;    //C++11

所以如果對標準IO流進行形如if (!cin)bool判斷時,便會調用operator bool,其返回的結果將會作為if的判斷條件。
於是當cin輸入流出現錯誤時,if (!cin)中的條件會被判斷為真,此時可以呼叫cin.clear()來重置流的狀態,同時呼叫cin.ignore()來清除輸入緩衝區中的內容,來消除上次輸入對下次輸入的影響,常見做法為:

cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');

通常這樣把第一個參數設定得足夠大,使得實際只有第二個參數'n'起作用,這樣便可以把回車前的輸入字元從輸入緩衝流中擦除。然後便嘗試進行讀取下次的輸入。

if (!cin)
{
    cin.clear();
    cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
    continue;
}
刘奇

cin是輸入流,!cin就是判斷輸入流是否正常。

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板