为什么有些例子使用“endl”而不是“\n”?
我听说“endl”的处理时间比“\n”长,因为“endl”有一些刷新过程。
但是,互联网上有很多使用“endl”的例子。
我想知道他们为什么使用被认为效率低下的“endl”。
对不起英语尴尬......谢谢
通常,直接使用 ofstd::cout
并不适用于生产代码,通常首选使用某种日志记录工具(用于写入文件而不是标准流等)。在这样的日志库中,您需要注意只在需要时刷新,但对于一些临时的、类似调试的输出,性能影响std::endl
并不重要,更重要的是立即看到所需的输出。
许多人认为这<< std::endl
与 不同<< '\n' << std::flush
,因为它会插入正确的结束行标记。
那显然是胡说八道。
还有一些人从未听说过std::cerr
,因此错误地将日志记录到std::cout
.
如果您使用了错误的工具,那么用大棒将其按自己的意愿行事,而不是退后一步并认识到您需要的是锤子而不是螺丝刀,这是令人痛苦的普遍现象。
如果你真的想要,也许是因为你的程序特别不稳定,而且你正在通过反复试验进行编程(这使得你的代码实际上不太可能是正确的,而不是最后看起来“工作”),你可以很容易地使std::cout
无缓冲太。
没有必要养成更多的坏习惯。
std::cout << std::unitbuf;