最終更新日時:
が更新

履歴 編集

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を返すようになる。