1

为什么有些例子使用“endl”而不是“\n”?

我听说“endl”的处理时间比“\n”长,因为“endl”有一些刷新过程。

但是,互联网上有很多使用“endl”的例子。

我想知道他们为什么使用被认为效率低下的“endl”。

对不起英语尴尬......谢谢

4

2 回答 2

2

通常,直接使用 ofstd::cout并不适用于生产代码,通常首选使用某种日志记录工具(用于写入文件而不是标准流等)。在这样的日志库中,您需要注意只在需要时刷新,但对于一些临时的、类似调试的输出,性能影响std::endl并不重要,更重要的是立即看到所需的输出。

于 2020-12-11T10:51:12.770 回答
2
  1. 许多人认为这<< std::endl与 不同<< '\n' << std::flush,因为它会插入正确的结束行标记。
    显然是胡说八道

  2. 别人不明白,std::cin被绑std::cout在一起所以后者想看就脸红。

  3. 还有一些人从未听说过std::cerr,因此错误地将日志记录到std::cout.
    如果您使用了错误的工具,那么用大棒将其按自己的意愿行事,而不是退后一步并认识到您需要的是锤子而不是螺丝刀,这是令人痛苦的普遍现象。

  4. 如果你真的想要,也许是因为你的程序特别不稳定,而且你正在通过反复试验进行编程(这使得你的代码实际上不太可能是正确的,而不是最后看起来“工作”),你可以很容易地使std::cout无缓冲太
    没有必要养成更多的坏习惯。

     std::cout << std::unitbuf;
    
于 2020-12-11T11:24:04.293 回答