2012-10-15 82 views
7

可能重复:
do I need to close a std::fstream?是否自动关闭其文件?

int main() { 
    ofstream a("a.txt"); 
    a << "A" << endl; 
    //a.close(); 
} 

这工作得很好,但不是有必要关闭该文件在程序的结束?

+0

看到这个问题http://stackoverflow.com/questions/4802494/do-i-need-to-close-a-stdfstream(并且即使那一个是重复的) – Dirk

+0

@Dirk我只是寻找的不是ifstream下次我会广泛搜索。如果您愿意,请关闭我的问题。 – truongnam1996

回答

16

ofstream将在调用析构函数时关闭文件,即当文件超出范围时。但是,调用close()当然不会造成任何伤害,并表达您对维护程序员的意图。

调用close()还允许您检查是否关闭()是成功的,因为你就可以同时检查failbit

http://www.cplusplus.com/reference/iostream/ofstream/close/

4

这是必要的,如果你想检查结果(接近调用成功或失败)。

否则,流的析构函数会尝试为您关闭文件。