永发信息网

[C++]请具体、详细地解释下什么是【刷新输出缓冲】。燃眉之急,万分感谢!!

答案:3  悬赏:10  手机版
解决时间 2021-03-28 03:18
  • 提问者网友:蓝莓格格巫
  • 2021-03-27 18:07
[C++]请具体、详细地解释下什么是【刷新输出缓冲】。燃眉之急,万分感谢!!
最佳答案
  • 五星知识达人网友:旧脸谱
  • 2021-03-27 19:02
刷新输出缓冲区
这个问题要先了解C++的输出实现方式。
如果是输出到终端(简单举例就算是屏幕上),一般不需要刷新缓冲区,因为会即时输出到终端;
如果输出到文件,由于文件操作速度很慢,一般是先保存在一个输出缓冲区内。你可以想象成你申请了一段内存,输出到文件时会先往这段内存里写,一旦这段内存写满了,就立刻把内存中所有的内容一次性写入文件,然后再重新填充缓冲区。除了缓冲区已满,关闭已打开的文件时也会自动刷新。

在你的问题中,就是在输出了一个换行后,让程序刷新一下缓冲区,就是无论缓冲区是否已满,都让他直接写入到文件中,而不去等待下一次输出。其实,只要调用一个函数即可做到。

stream << std::endl; //stream是你打开的文件流,这个你应该明白哈
stream.flush();// 刷新缓冲区,这个就是刷新缓冲区

不明白可以继续追问
全部回答
  • 1楼网友:零点过十分
  • 2021-03-27 20:54
这个我也不知道怎么解释比较好
我只想到这样说:
用 cout 输出, 其实并不是直接打印在 屏幕上,
具体过程是, 先把要打印的数据储存在一个高速缓存中保存起来, 然后在从高速缓存中读取要打印的数据, 最后才把它打印到屏幕上
这样做的原因是为了调节 输出设备 和 处理器之间的速度差异
因为 输出设备 和 处理器 各自的处理速度不一样, 所以为了让这两个设备同步,就弄了个缓存
endl的作用就是手动地把 缓存的数据打印到屏幕,并清空缓存
如果你用过没有 输出缓存的 输出函数你就会有所体会
比如 C语言 里面的 printf(); 这个就是没输出缓存的
如果你这两个混合着用, 并且每次用完cout后没使用endl ,你会发现输出的顺序可能不是你所要的顺序, 这就是因为缓存的所造成的
不知道你理解没
  • 2楼网友:胯下狙击手
  • 2021-03-27 19:27
缓冲是一段用来暂时存储信息的空间,目的是加快访问外部设备的效率。
我们用PRINTF等函数输出时,是先将要输出的字符放到STDIN等文件缓冲区中,
这时还不会在显示器上显示,因为显示器属于外部设备,访问速率低,所以,只有到
了输出换行或者输出结束,缓冲内不过,,才会统一将这些字符输出。
刷新输出缓冲,便是将输出缓冲区内未输出的字符全部输出到输出设备【可能是磁盘等】
,并将输出缓冲区清空!
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯