【发布时间】:2012-12-24 11:36:00
【问题描述】:
我正在阅读cplusplus.com tutorial on I/O。最后,它说 fstream 缓冲区与磁盘上的文件同步
明确地,使用操纵器:当某些操纵器用于 流时,会发生显式同步。这些机械手 分别是:flush 和 endl。
和
显式地,使用成员函数sync():调用 流的成员函数sync(),它不带参数,导致 立即同步。此函数返回一个 int 值,等于 -1 如果流没有关联的缓冲区或发生故障。否则(如果流缓冲区已成功同步)它 返回 0。
除了一些其他隐含的情况(如析构和stream.close())
调用 fstream::flush() 和 fstream::sync() 有什么区别?结束?
在我的代码中,我一直使用flush()。
关于 std::flush() 的文档:
刷新流缓冲区
同步与流关联的缓冲区 到其受控的输出序列。这实际上意味着所有 缓冲区中未写入的字符被写入其受控 尽快输出序列(“flushed”)。
关于 std::streambuf::sync() 的文档:
将输入缓冲区与字符源同步
调用它以将流缓冲区与受控序列(如文件流中的文件)同步。公共成员函数 pubsync 调用这个受保护的成员函数来执行这个动作。
如果这是一个新手问题,请原谅我;我是菜鸟。
【问题讨论】:
标签: c++ stream buffer fstream ostream