std::ios_base::iostate
提供: cppreference.com
<tbody>
</tbody>
typedef /*implementation defined*/ iostate; |
||
static constexpr iostate goodbit = 0; |
||
static constexpr iostate badbit = /*implementation defined*/ static constexpr iostate failbit = /*implementation defined*/ static constexpr iostate eofbit = /*implementation defined*/ |
||
ストリーム状態フラグを規定します。 これは BitmaskType であり、以下の定数が定義されます。
| 定数 | 説明 |
| goodbit | エラーなし |
| badbit | 回復不可能なストリームのエラー |
| failbit | 入出力操作が失敗しました (書式エラーまたは抽出エラー) |
| eofbit | 紐付けられている入力シーケンスがファイル終端に達しました |
eofbit
eofbit は以下の標準ライブラリ関数によってセットされます。
- 文字列入力関数 std::getline — 指定された終端文字に達するのでなく、ストリームの終端に達することによって完了した場合。
- basic_istream::operator>> の数値入力オーバーロード — num_get::get 処理のステージ2で、次の文字の読み込み中にストリームの終端に遭遇した場合。 パースの状態によって、同時に
failbitがセットされるかもしれないしされないかもしれません。 例えば、int n; istringstream buf("1"); buf >> n;はeofbitをセットしますがfailbitをセットしません。 整数1はパースに成功しnに格納されます。 一方、bool b; istringstream buf("tr"); buf >> boolalpha >> b;はeofbitとfailbitを両方セットします。 ブーリアンtrueのパースを完了するのに十分な文字がありません。 - operator>>std::basic_istream の文字抽出オーバーロード — 抽出する文字数の制限 (もしあれば) の前にストリームの終端に達した場合。
- std::get_time 入出力マニピュレータおよび std::time_get のパース関数 (time_get::get、 time_get::get_time、 time_get::get_date など) のいずれか — 期待される日付時刻値のパースに必要な最後の文字が処理される前にストリームの終端に達した場合。
- std::get_money 入出力マニピュレータおよび money_get::get 関数 — 期待される金額値のパースに必要な最後の文字が処理される前にストリームの終端に達した場合。
- すべての書式付き入力関数の先頭で実行される basic_istream::sentry のコンストラクタ —
skipwsビットがセットされていない (std::noskipws の発行などによって) 場合を除き、 sentry は先行するホワイトスペース文字を読み込み、破棄します。 その操作中に入力ストリームの終端に達した場合、eofbitとfailbitの両方がセットされ、入力は行われません。 - 入出力マニピュレータ std::ws — ホワイトスペースの消費中にストリームの終端に達した場合 (書式付き入力の sentry と異なり、この場合
failbitはセットしません)。 - 書式なし入力関数 basic_istream::read、 basic_istream::get、 basic_istream::peek および basic_istream::getline — ストリームの終端に達したとき。
- 破棄入力関数 basic_istream::ignore — 指定された区切り文字に達する前にストリームの終端に達したとき。
- 直接入力関数 basic_istream::readsome — basic_streambuf::in_avail が
-1を返す場合。
以下の関数は副作用として eofbit をクリアします。
ほぼすべての状況で、 eofbit がセットされる場合は failbit も同様にセットされることに注意してください。
failbit
failbit は以下の標準ライブラリ関数によってセットされます。
- すべての入力関数の先頭で実行される basic_istream::sentry のコンストラクタ — ストリームに
eofbitまたはbadbitがすでに設定されている場合、または先行するホワイトスペースの消費中にストリームの終端に達した場合。 - すべての出力関数の先頭で実行される basic_ostream::sentry のコンストラクタ — 処理系定義の状況で。
- operator>>(std::basic_string<>) — 入力ストリームから文字を抽出しなかった場合。
- operator>>(std::complex<>) — 有効な複素数の抽出に失敗した場合。
- operator>> の文字配列および単一文字のオーバーロード — いかなる文字の抽出にも失敗した場合。
- basic_istream::operator>> の streambuf オーバーロード — streambuf 引数がヌルポインタの場合、または streambuf に1文字も挿入されなかった場合。
- basic_ostream::operator<< の streambuf オーバーロード — 1文字も挿入しなかった場合。
- operator>>(std::bitset<>) — 入力ストリームから1文字も抽出しなかった場合。
- std::getline — 1文字も抽出しなかった場合、または入力ストリームから basic_string::max_size 個の文字を抽出してしまった場合。
- basic_istream::operator>> の数値、ポインタ、およびブーリアン入力オーバーロード (正確には、それらから呼ばれる num_get::get のオーバーロード) — 入力が有効な値としてパースできなかった場合、またはパースされた値が結果の型に収まらない場合。
- 時間入力マニピュレータ std::get_time (正確には、そこから呼ばれる time_get::get) — 入力が指定された書式文字列に従って時間の値として曖昧なくパースできなかった場合。
- 金額入力マニピュレータ std::get_money (正確には、そこから呼ばれる money_get::get) — 入力がロケールのルールに従って金額の値として曖昧なくパースできなかった場合。
- すべての RandomNumberEngine の抽出演算子 — 不正な入力に遭遇した場合。
- すべての RandomNumberDistribution の抽出演算子 — 不正な入力に遭遇した場合。
- 書式なし入力関数 basic_istream::get — いかなる文字の抽出にも失敗した場合。
- basic_istream::getline — 1文字も抽出しなかった場合、区切り文字に遭遇せず提供されたバッファがいっぱいになった場合、または提供されたバッファサイズが1より小さい場合。
- basic_istream::read — 要求された文字をすべて抽出できる前に入力ストリームにファイル終端状況が発生した場合。
- basic_istream::seekg — 失敗した場合。
- basic_ostream::tellp — 失敗した場合。
- ファイル名の引数を取る std::basic_fstream、 std::basic_ifstream および std::basic_ofstream のコンストラクタ — ファイルを開けなかった場合。
- basic_fstream::open、 basic_ifstream::open および basic_ofstream::open — ファイルを開けなかった場合。
- basic_fstream::close、 basic_ifstream::close および basic_ofstream::close — ファイルを閉じれなかった場合。
badbit
badbit は以下の標準ライブラリ関数によってセットされます。
- basic_ostream::put — いかなる理由であれ、出力ストリームへの文字の挿入に失敗した場合。
- basic_ostream::write — いかなる理由であれ、出力ストリームへの文字の挿入に失敗した場合。
- 書式付き出力関数 operator<<、 std::put_money および std::put_time — 出力が完了する前に出力ストリームの終端に遭遇した場合。
- basic_ios::init —
rdbuf()にヌルポインタを持つストリームを初期化するために呼ばれた場合。 - basic_istream::putback および basic_istream::unget — ヌルの
rdbuf()を持つストリームに対して呼ばれた場合。 - basic_ostream::operator<<(basic_streambuf*) — 引数としてヌルポインタが渡された場合。
- basic_istream::putback および basic_istream::unget —
rdbuf()->sputbackc()またはrdbuf()->sungetc()がtraits::eof()を返した場合。 - basic_istream::sync、 basic_ostream::flush および
unitbuf出力ストリームのすべての出力関数 —rdbuf()->pubsync()が-1を返した場合。 - すべてのストリーム入出力関数 — 紐付けられているストリームバッファのいずれかのメンバ関数 (sbumpc()、 xsputn()、 sgetc()、 overflow() など) によって例外が投げられた場合。
- ios_base::iword および ios_base::pword — 失敗した場合 (メモリ確保に失敗した場合など)。
例
| This section is incomplete Reason: no example |
関連項目
以下の表は ios_base::iostate フラグのすべての有り得る組み合わせに対する basic_ios のアクセサ (good()、 fail() など) の値を示します。
| ios_base::iostate のフラグ | basic_ios のアクセサ
| |||||||
| eofbit | failbit | badbit | good() | fail() | bad() | eof() | operator bool | operator! |
| false | false | false | true | false | false | false | true | false |
| false | false | true | false | true | true | false | false | true |
| false | true | false | false | true | false | false | false | true |
| false | true | true | false | true | true | false | false | true |
| true | false | false | false | false | false | true | true | false |
| true | false | true | false | true | true | true | false | true |
| true | true | false | false | true | false | true | false | true |
| true | true | true | false | true | true | true | false | true |
| 状態フラグを返します ( std::basic_ios<CharT,Traits>のパブリックメンバ関数)
| |
| 状態フラグを設定します ( std::basic_ios<CharT,Traits>のパブリックメンバ関数)
| |
| 状態フラグを変更します ( std::basic_ios<CharT,Traits>のパブリックメンバ関数)
|