关闭fstream是否可以保证与文件系统的同步?我正在与同事讨论这个问题,需要明确的参考。我对标准所说的内容以及使用Visual Studio实现在Windows上发生的事情感兴趣。
另外,如果close并不意味着同步,是否有标准的C ++方法来确保同步完成?
答案 0 :(得分:1)
我很确定已经解决了关闭文件流关闭缓冲区的问题。那么,现在,缓冲区:
draft of Std'1998:27.8.1.3.6:basic_filebuf * close();
6效果:如果is_open()== false,则返回空指针。如果存在放置区域,请调用溢出(EOF)以刷新字符。 (...)最后它关闭文件('''好像''通过调用std :: fclose(file))。308)如果任何对overflow或std :: fclose的调用失败然后关闭失败。
现在,请参阅overflow()
:27.8.1.4.8(...)
然后我试图进一步追踪它,某处有一些sync
和sputc
的引用,但我无法追查overflow
如何保证冲洗的确切措辞。肯定会,但对不起,我的时间到了今天:/