まず、ストリーム状態でエラーを検査する方法を説明します。ストリームには、エラーを検査するためのいくつかのメンバー関数があります。これを表 9 にまとめます。
ios_base メンバー関数 | 機能 |
---|---|
bool good() |
エラーフラグが設定されていないと真 |
bool eof() |
eofbit の設定時に真 |
bool fail() |
failbit か badbit
の設定時に真 |
bool bad() |
badbit の設定時に真 |
bool operator!() |
fail() と同様 |
operator void*() |
fail()
の場合 NULL ポインタ、それ以外は非 NULL 値 |
iostate rdstate() |
ストリーム状態の値 |
重要な部分でストリームの状態を調べるのは良い方法です。次にその例を示します。
if (!cout) error();
cout の状態を operator!() で調べます。ストリーム状態がエラーになっている場合は、true が返ります。
ブール型の位置には、次のようなテストのために出力ストリームを設定することもできます。
if (cout << x) // okay!
ここでの要点は operator void*() です。この関数は、ストリーム状態が非ゼロのときに非ゼロ値を返します。
最後に、明示的なメンバー関数も使用できます。
if (cout << x, cout.good()) // okay!;
good() と operator!() には、次の違いがあります。つまり、関数 good() ではすべてのフラグが認識され、operator!() と fail() では eofbit が無視されます。
Copyright (c) 1998, Rogue Wave Software, Inc.
このマニュアルに関する誤りのご指摘やご質問は、電子メールにてお送りください。
OEM リリース, 1998 年 6 月