什么是C ++ iostream endl fiasco

What is the C++ iostream endl fiasco?

我在听安德烈·亚历山德里斯库在谷歌上关于D编程语言的演讲时,他抛出了一行关于"endl"失败的话。我只是认为endl是表示行结束并为流刷新缓冲区的首选方法。为什么它被认为是一场惨败?我不应该在代码中使用它吗?


从我的评论转载:

(我假设)他只是意味着许多,特别是新的C++程序员使用EDOCX1 0而不是EDCOX1,1,用于新行,频繁地刷新,并且潜在地使程序的性能变差。

也就是说,大多数人都被教导,std::endl是将新行插入流中的规范方法,尽管它很少需要或适合对其进行刷新。

有人认为,std::endl甚至不应该在标准中,因为它是非常不合适的,而且无论如何也不会比'
' << std::flush
节省大量的打字成本。

TR;DR(S):

  • 最后,std::endl除了通常性能较差和打字较多外,什么也不买。
  • 它有它的用途,但它们比它在大多数大型代码库中的使用频率要少得多,因此…
  • 它的效用是高度可疑的,它的普遍性是荒谬的——确实是一场惨败!