根据来自:http ://www.cplusplus.com/reference/iostream/ostream/flush/ 的定义,尚不清楚该功能为何存在,以及您将其用于什么目的。为什么不每次写入流时调用flush()?
问问题
6782 次
2 回答
28
这个词很可能flush
来自你在现实生活中会冲洗的东西。一个厕所...
所以让我们尝试一个厕所类比:
每次有新的放入碗中时冲洗非常耗时并且完全浪费水。这是今天每个人都在努力做到环保的一个大问题。
那么你会怎么做呢?您可以通过将其全部保存并在最后刷新一次来缓冲它。如果出于某种原因,当你没有完成时,你总是可以“过早地”在中间的某个地方冲洗。
C++ 流(除其他外)的工作方式大致相同。为了减少开销并提高性能,流会缓冲其内容并仅定期“刷新”它。这样做的缺点是你可能会得到像这个问题中的“延迟”行为:为什么 printf 在调用后不刷新,除非换行符在格式字符串中?
这就是flush()
它的用途。允许您覆盖缓冲。
于 2012-09-09T02:37:54.617 回答
1
每次在硬盘上写入一个字符是低效的。通过网络为每个字符发送一个数据包是低效的。因此流媒体经常被缓存。flush()
当必须刷新缓存并且应该真正发送或写入内容时,这只是在流式传输期间“手动”控制的一种方式。
于 2012-09-09T02:34:25.033 回答