【发布时间】:2015-08-30 22:41:19
【问题描述】:
在以下情况下会发生刷新:
- std::cerr
- std::cin
- 程序终止
- 在许多实现中,标准输出是行缓冲的,这意味着“\n”无论如何都会刷新
所以看起来在大多数常规程序中,std::endl 基本上是不必要的,但它几乎无处不在。
【问题讨论】:
-
您认为用户需要对
\n无论如何都不会刷新的那些实现做些什么? -
@user5282870:不,它们并不罕见。基本上任何时候你将调试输出放到 std::cout 中,你都应该使用 std::endl ,这样如果程序在此之后立即崩溃并异常终止,诊断将已经被刷新。
-
也许您在 std::cerr 上输出了不同的调试信息,并且您正在将流通过管道传输到两个单独的日志文件中,以免使日志格式不可读,并将时间戳记在日志。
-
没有。当你想要一个
\n并且你想要刷新时,使用std::endl。真的就是这么简单。 -
那我不明白你为什么要问它是不是多余的。