C++ ライブラリ・リファレンス

エラー状態のチェック

「MT-安全」にするには、次の例のように、エラーを起こすような入出力操作を伴う危険領域では、入出力のエラーを調べる必要があります。


例 4-1 エラー状態のチェック

#include <iostream.h>
#include <rlocks.h>
enum iostate { IOok, IOeof, IOfail };

iostate read_number(istream& istr, int& num)
{
       stream_locker sl(istr, stream_locker::lock_now);

       istr >> num;

       if (istr.eof()) return IOeof;
       if (istr.fail()) return IOfail;
       return IOok;
}

この例では、stream_locker オブジェクトである sl のコンストラクタが istream オブジェクトの istr をロックしています。sl のデストラクタは、read_number の終了時に呼ばれ、istr のロックを解除します。