explicit sentry(basic_istream& is, bool noskipws = false);
概要
入力処理の前処理を行う。
効果
is.good()がfalseなら、is.setstate(failbit)を呼び出し、関数から帰る。is.tie()が非ヌルポインタなら、is.tie()->flush()を呼び出す。noskipwsがfalseかつis.flags() & ios_base::skipwsが真なら、ストリームから空白文字を読み捨てる。
ここまでの手順が完了したら、このオブジェクトのoperator bool関数はtrueを、さもなくばfalseを返すようになる。
参照
- LWG Issue 419.
istreamextractors not settingfailbitifeofbitis already set- C++11で、
is.good()がfalseの場合にsetstate(failbit)を呼び出すことが規定された。それ以前は「good()がtrueなら入力の準備をする」としか書かれておらず、既にeofbitが立っているストリームから抽出してもfailbitが立たないため、抽出の失敗を検知できなかった
- C++11で、