std::ios_base:: iostate
|
typedef
/*implementation defined*/
iostate
;
|
||
|
static
constexpr
iostate goodbit
=
0
;
|
||
|
static
constexpr
iostate badbit
=
/* implementation defined */
static
constexpr
iostate failbit
=
/* 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 が、抽出する文字数の制限(存在する場合)に達する前にストリームの終端に到達した場合。
- I/Oマニピュレータ std::get_time および std::time_get 解析関数: time_get::get 、 time_get::get_time 、 time_get::get_date などが、期待される日時値の解析に必要な最後の文字を処理する前にストリームの終端に到達した場合。
- I/Oマニピュレータ std::get_money および money_get::get 関数が、期待される通貨値の解析に必要な最後の文字を処理する前にストリームの終端に到達した場合。
-
すべての書式付き入力関数の先頭で実行される
basic_istream::sentry
コンストラクタ:
skipwsビットが解除されていない限り(例: std::noskipws の発行により)、sentryは先頭の空白文字を読み取り破棄する。この操作中に入力ストリームの終端に到達した場合、eofbitとfailbitの両方が設定され、入力は行われない。 -
I/Oマニピュレータ
std::ws
が、空白文字を消費中にストリームの終端に到達した場合(ただし、書式付き入力sentryとは異なり、この場合
failbitは設定しない)。 - 非書式付き入力関数 basic_istream::read 、 basic_istream::get 、 basic_istream::peek 、 basic_istream::readsome 、 basic_istream::ignore 、および 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>> が文字を抽出できない場合。
- streambufオーバーロード版 basic_istream::operator>> で、streambuf引数がnullポインタの場合、またはstreambufに文字が挿入されなかった場合。
- streambufオーバーロード版 basic_ostream::operator<< が文字を挿入しない場合。
- operator>> (std::bitset<>) が入力ストリームから文字を抽出しない場合。
- std::getline が文字を抽出しない場合、または入力ストリームから basic_string::max_size 文字を抽出できた場合。
- 数値、ポインタ、ブーリアン入力のオーバーロード版 basic_istream::operator>> (技術的にはこれらが呼び出す num_get::get のオーバーロード)で、入力が有効な値として解析できない場合、または解析された値が変換先の型に適合しない場合。
- 時間入力マニピュレータ std::get_time (技術的にはこれが呼び出す time_get::get )で、与えられた書式文字列に従って入力が明確に時間値として解析できない場合。
- 通貨入力マニピュレータ std::get_money (技術的にはこれが呼び出す money_get::get )で、ロケールルールに従って入力が明確に通貨値として解析できない場合。
- すべての RandomNumberEngine s の抽出演算子で、不正な入力が検出された場合。
- すべての RandomNumberDistribution s の抽出演算子で、不正な入力が検出された場合。
- 非書式化入力関数 basic_istream::get が文字を抽出できない場合。
- basic_istream::getline が文字を抽出しない場合、区切り文字に遭遇せずに提供されたバッファを埋めた場合、または提供されたバッファサイズが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()にnullポインタを指定してストリームを初期化するために呼び出された場合。 -
basic_istream::putback
および
basic_istream::unget
nullの
rdbuf()を持つストリームに対して呼び出された場合。 - basic_ostream::operator<< (basic_streambuf*) 引数としてnullポインタが渡された場合。
- 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()など)によって例外がスローされた場合のすべてのストリームI/O関数。 - ios_base::iword および ios_base::pword 失敗時(例:メモリ割り当ての失敗)。
例
|
このセクションは不完全です
理由: 例がありません |
関連項目
以下の表は、すべての可能な 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 |
| 偽 | 偽 | 真 | 偽 | 真 | 真 | 偽 | 偽 | 真 |
| 偽 | 真 | 偽 | 偽 | 真 | 偽 | 偽 | 偽 | 真 |
| 偽 | 真 | 真 | 偽 | 真 | 真 | 偽 | 偽 | 真 |
| 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>
の公開メンバ関数)
|