小编cjc*_*rie的帖子

关于fstream缓冲区,flush()和sync()有什么区别?

我正在阅读关于I/Ocplusplus.com教程.最后,它说fstream缓冲区与光盘上的文件同步

明确地,使用操纵器:当在流上使用某些操纵器时,会发生显式同步.这些操纵器是:flush和endl.

显式地,使用成员函数sync():调用流的成员函数sync(),它不带参数,导致立即同步.如果流没有关联的缓冲区或者出现故障,则此函数返回一个等于-1的int值.否则(如果流缓冲区已成功同步),则返回0.

除了一些其他隐式案例(例如destroy和stream.close())

调用fstream :: flush()和fstream :: sync()有什么区别?ENDL?

在我的代码中,我总是使用flush().

有关std :: flush()的文档:

刷新流缓冲区

将与流关联的缓冲区同步到其受控输出序列.这实际上意味着缓冲区中的所有未写入字符都会尽快写入其受控输出序列("刷新").

有关std :: streambuf :: sync()的文档:

将输入缓冲区与字符源同步

调用它来使流缓冲区与受控序列同步(就像文件流中的文件一样).公共成员函数pubsync调用此受保护的成员函数来执行此操作.

如果这是一个新手问题,请原谅我; 我是个菜鸟.

c++ buffer fstream stream ostream

15
推荐指数
2
解决办法
1万
查看次数

标签 统计

buffer ×1

c++ ×1

fstream ×1

ostream ×1

stream ×1