Rogue Wave バナー
前へマニュアルの先頭へ目次次へ

8.2 ストリーム状態の検査

まず、ストリーム状態でエラーを検査する方法を説明します。ストリームには、エラーを検査するためのいくつかのメンバー関数があります。これを表 9 にまとめます。

表 9 -- エラー検査用のストリームメンバー関数

ios_base メンバー関数 機能
bool good()
エラーフラグが設定されていないと真
bool eof()
eofbit の設定時に真
bool fail()
failbitbadbit の設定時に真
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 月