1

如果初始打开失败,我正在尝试确定是否需要在 fstream 对象上调用 close。

IE

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 回答