什么是C ++ iostream endl惨败?

当时,我正在听Andrei Alexandrescu关于D编程语言的谷歌演讲,当时他抛出了关于“endl”惨败的一行。 我只是认为endl是表示一行结束的首选方式,并为一个stream刷新缓冲区。 为什么它被认为是一场惨败? 我应该不是在我的代码中使用它?

重新发布我的评论:

(我假设)他只是意味着很多,特别是新的C ++程序员盲目地使用std::endl而不是'\n'换行,不必要地频繁刷新,并且可能会使他们的程序性能下降。

也就是说,大多数人都被教导说, std::endl是插入换行符规范方法,即使很less需要或不适合刷新它。

有些人认为(*咳嗽*) std::endl甚至不应该在标准,因为它是很less适当的,不是一个重要的打字节省超过'\n' << std::flush无论如何。


TL; DR (s)

  • 最后, std::endl没有购买任何东西,除了通常更差的性能, 通常更多的打字。
  • 它有它的用途,但是它们比大多数大型代码库中使用的频率要less得多,所以…
  • 它的效用是非常可疑的,它的无处不在是荒谬的 – 确实是一个失败!