0

C++標準ライブラリのstd::fstreamクラスのメンバー関数openが、正常な開始をすぐにチェックするためにboolではなくvoidを返すのはなぜですか?

4

2 に答える 2

2

例外が設定されている場合、またはエラーが発生したことを示すためopenに使用される場合、呼び出しが成功しなかったときに例外をスローするためです。failbitドキュメントから:

失敗すると、failbitフラグが設定され(メンバーfailでチェックできます)、例外を設定した値によっては、例外がスローされる場合があります。

于 2012-10-03T20:14:54.770 に答える
1

私の理解では、任意のタイプのファイルの読み取り (または書き込みも可能) を試行できるようにするときに、fstream が失敗する可能性がある方法が非常に多いということです。また、「失敗」は、状況やプログラマーによってはあいまいになる可能性があります。それを考えると、ブール値の戻り値から意味のあるものを取得するのは難しいと思います。

于 2012-10-03T20:28:42.353 に答える