首頁  >  問答  >  主體

c++ - if(! cin ) 是什么意思 有什么作用

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

大家讲道理大家讲道理2765 天前697

全部回覆(2)我來回復

  • 伊谢尔伦

    伊谢尔伦2017-04-17 14:59:46

    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;
    }

    回覆
    0
  • 怪我咯

    怪我咯2017-04-17 14:59:46

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

    回覆
    0
  • 取消回覆