問題は、std::fstream
デフォルトでは例外をスローせず、検査可能なビットを設定することです。どうやら、ここで説明されているように、例外関数を使用して例外をスローすることができます(私は思う)-例えばc++リファレンスページを参照してください
しかし、たとえば、ファイルの書き込み権限が、ファイルに書き込みできないことを意味する場合はどうでしょうか。これは、私がやろうとすると、
ofstream file("file", ios::out);
失敗するでしょう。しかし、uidに書き込み権限がなかったという正確な理由で失敗したかどうかをどのように判断できますか?私が探しているのは、これを正確に教えてくれるメカニズムだと思います。たとえば、「ファイルを書き込めないのは...」と表示される場合があります。書き込みエラーが発生する理由はたくさんあるので(ハードドライブの障害/破損など)、ファイルのアクセス許可を確認する必要はありません。それが失敗した理由を正確に教えてくれればもっと良いでしょう。
そのようなエラーチェックシステムがiostream(特にostream)に存在するかどうか誰かが知っていますか?(多分ブーストで?)