【发布时间】:2011-11-11 14:18:27
【问题描述】:
当我可以使用\n 时,是否有理由将endl 与cout 一起使用?我的 C++ 书说要使用 endl,但我不明白为什么。 \n 没有像 endl 那样被广泛支持,还是我遗漏了什么?
【问题讨论】:
-
明确地说,在绝大多数情况下,您应该不使用
endl。另见this answer + cmets。 -
请记住,在 DOS/Windows 平台上,行尾是“\r\n”,而在某些(全部?)Mac 平台上也是“\r”。
-
@sylvainulg:这不是特别相关。打印到文本流的 '\n' 字符将自动转换为系统的行尾表示。就这一点而言,
'\n'和std::endl之间没有区别(区别在于flush)。 (Mac平台,从OSX开始(我认为)是基于Unix的,并使用'\n'来标记行尾。) -
如果您确实需要尽可能频繁地刷新流(例如,在崩溃前查看调试输出),您可以使用
std::cerr,它也不需要显式刷新。跨度> -
@keith:感谢您的精确。这在我手头的文档中不是很清楚,而且我自己也不知道同花差异。
标签: c++ string-formatting iostream buffering