从c++ 11开始,我们可以将一个std::fstream对象分配给另一个对象,但是我找不到找到说明的文件,如果fstream对象已经与文件关联(is_open()==true),会发生什么。

所以我的问题是,在下面的代码中,File1.txt是否将正确关闭,或者我是否必须手动将其关闭。而且,如果我必须手动执行此操作,如果我不执行该怎么办?

std::fstream file("File1.txt");
file = std::fstream("File2.txt"); //will this implicitly call file.close()?

最佳答案

fstream对象的 move 分配将导致其关联的filebuf的 move 分配。该文档非常清楚地表明,首先关闭了旧文件(就像file.rdbuf()->close()而不是file.close()一样):



(这是n4527草案的措辞,至少在n3485之前没有变化)

关于c++ - move 分配std::fstream关闭原始流吗,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35139636/

10-13 08:30