有人可以解释一下,这到底是什么意思?我试图了解和之间有什么区别clog
,cerr
区别仅在于缓冲提前谢谢
问问题
535 次
2 回答
2
当您写入 clog 时,您实际上会写入字符的内存存储。当此存储已满时,它会写入实际流。当流关闭时(这将在程序结束时发生),然后将任何剩余的数据写入流(也可能发生手动刷新)。
使用 cerr,这不会发生。
通常,由于写入内存比写入大多数流更快,因此缓冲的效果是性能的整体提升。情况并非总是如此(一个典型的例子是间接级别导致缓冲区写入缓冲区写入缓冲区),但这通常足以成为合理的默认值。但是,结果是在写入的流对象和写入的实际流之间可能存在延迟,这在某些情况下是不合适的。
可以合理地想象写入 cerr 的内容可能需要立即采取行动,但写入 clog 的内容则不需要,因此存在差异。
于 2010-09-30T11:44:34.157 回答
1
clog 和 cerr 之间的区别在于 clog 是完全缓冲的,而 cerr 的输出在每次格式化后都会写入外部设备。对于完全缓冲的流,只有在缓冲区已满时才会写入到实际外部设备的输出。因此 clog 对于将输出重定向到文件更有效,而 cerr 主要用于终端 I/O。每次格式化后写入外部设备,在 cerr 的情况下写入终端,用于同步终端的输出和输入。此外,预定义的流与它们关联的 C 标准文件同步。
于 2010-09-30T11:44:55.717 回答