首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >iostream中的缓冲

iostream中的缓冲
EN

Stack Overflow用户
提问于 2010-09-30 19:28:57
回答 2查看 533关注 0票数 0

有人能解释一下吗,这到底是什么意思?我在试着理解clogcerr的区别,区别只在于提前谢谢的缓冲

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-09-30 19:44:34

当你写到clog的时候,你实际上是在写一个内存中的字符存储。当这个存储区变满时,它就会写入实际的流。当流关闭时(这将在程序结束时发生),那么任何剩余的数据都会写入流中(也可以进行手动刷新)。

有了cerr,这种情况就不会发生。

通常,由于写入内存的速度比写入大多数流的速度快,因此缓冲的效果是整体性能的提高。情况并不总是如此(典型的例子是,间接性级别导致缓冲区写入缓冲区写入缓冲区),但这通常足以使其成为合理的默认值。然而,结果是在正被写入的流对象和正被写入的实际流之间可能存在延迟,这在某些情况下是不适当的。

可以合理地想象,写入cerr的某些内容可能需要立即操作,而写入clog的某些内容则不需要,这就是不同之处。

票数 2
EN

Stack Overflow用户

发布于 2010-09-30 19:44:56

clog和cerr之间的不同之处在于,clog是完全缓冲的,而cerr的输出在每次格式化后写入外部设备。使用完全缓冲的流时,仅当缓冲区已满时才写入实际外部设备的输出。因此,clog对于将输出重定向到文件更有效,而cerr主要用于终端I/O。在每次格式化之后写入外部设备,在cerr的情况下写入到终端,用于同步到终端的输出和来自终端的输入。此外,预定义的流与其关联的C标准文件同步。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3830106

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档