1

最初のオープンが失敗した場合、fstream オブジェクトでクローズを呼び出す必要があるかどうかを解決しようとしています。

すなわち

std::fstream strm;
strm.open( "filename" );

if( ! strm.fail() )
{
    // Do something

    strm.close();  // [1]
}

strm.close();  // [2]

ここでcloseを呼び出す必要があります - 常に呼び出す必要がありますか [2]、または open が成功した場合にのみ呼び出す必要がありますか? [1]

ここではやり過ぎかもしれませんが、通常これを行う Windows API の方法から、私はCloseHandle( ... );を持っています。私の心に埋め込まれた:-)

4

2 に答える 2

3

ストリームは、fstream のデストラクタによって自動的に閉じられます。たとえば、再度開く場合など、プログラム ロジックで要求されない限り、明示的に閉じる必要はありません。ただし、開いていないストリームを閉じても問題は発生しません。

于 2010-05-12T15:22:09.970 に答える
0

いいえ、ストリームが開かれなかった場合、閉じるものはありません。

于 2010-05-12T15:22:11.850 に答える