以下看起来很合理,但我听说即使在 close() 调用之后,理论上数据仍然可以在缓冲区中而不是在磁盘上。
#include <fstream>
int main()
{
ofstream fsi("test.txt");
fsi << "Hello World";
fsi.flush();
fsi.close();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
你不能用标准工具来做到这一点,而必须依赖操作系统设施。对于 POSIXfsync应该是你所需要的。由于无法从标准流中获取 C 文件描述符,因此您必须在整个应用程序中使用 C 流,或者只是打开文件以刷新磁盘。或者,sync这会刷新所有缓冲区,您的用户和其他应用程序会讨厌这些缓冲区。