2010-05-12 112 views
1

我想解决的是如果我需要在fstream对象上调用close(如果初始打开失败)。fstream文件I/O问题 - 什么时候关闭文件流

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

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

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

strm.close(); // [2] 

应该在哪里接近在这里叫 - 它应该始终被称为[2]或者只在成功打开[1]?

我可能会在这里顶一下,但来自Windows API的方式通常这样做我有CloseHandle(...);嵌入我的脑海:-)

回答

3

该流将被fstream的析构函数自动关闭 - 除非程序逻辑需要它,否则不需要明确关闭它,例如,如果要重新打开它。但是,关闭未打开的流不会导致任何问题。

0

不,如果流未打开,则无法关闭。