• Class / Function / Type

      std::
    • Header file

      <>
    • Other / All

    最終更新日時(UTC):
    が更新

    履歴 編集

    function
    <istream>

    std::basic_istream::sentry::コンストラクタ

    explicit sentry(basic_istream& is, bool noskipws = false);
    

    概要

    入力処理の前処理を行う。

    効果

    1. is.good()falseなら、is.setstate(failbit)を呼び出し、関数から帰る。
    2. is.tie()が非ヌルポインタなら、is.tie()->flush()を呼び出す。
      • is.tie()が指す先のストリームバッファのput areaが空なら、この処理を省略しても良い。
      • is.rdbuf()->underflow()の呼び出しが発生するまで、この処理を遅延させても良い。
      • is.rdbuf()->underflow()の呼び出しが発生しなかったら、この処理を省略して良い(標準ライブラリ実装内部で、そのような最適化を行っても良い)。
    3. noskipwsfalseかつis.flags() & ios_base::skipwsが真なら、ストリームから空白文字を読み捨てる。
      • 空白文字の判定は、文字cについてuse_facet<ctype<CharT>>(is.getloc()).is(ctype::space, c)と等価な方法で行う。
      • このときis.rdbuf()->sbumpc()またはis.rdbuf()->sgetc()Traits::eof()を返したら、is.setstate(failbit | eofbit)を呼び出す。

    ここまでの手順が完了したら、このオブジェクトのoperator bool関数はtrueを、さもなくばfalseを返すようになる。