默认情况下,文件流以及许多其他类型的流都被缓冲。这意味着写入流可能不会导致基础文件立即更改。为了迫使所有缓冲的写操作立即进行,可以刷新流。您可以直接通过调用flush()方法或通过std::flush流操纵器来执行此操作:
std::ofstream os("foo.txt"); os << "你好,世界!" << std::flush; char data[3] = "Foo"; os.write(data, 3); os.flush();
有一个流操纵器std::endl,结合了编写换行符和刷新流:
// 以下两行都做同样的事情 os << "你好,世界!\n" << std::flush; os << "你好,世界!" << std::endl;
缓冲可以提高写入流的性能。因此,进行大量编写的应用程序应避免不必要的刷新。相反,如果I / O很少执行,则应用程序应考虑频繁进行刷新,以避免数据卡在流对象中。