什么是C ++ iostream endl惨败?

时间:2011-03-30 21:04:52

标签: c++ iostream endl

当他抛出关于“endl”惨败的一个班轮时,我正在听google talk by Andrei Alexandrescu on the D programming语言。我只是认为endl是表示行结束并刷新流缓冲区的首选方式。为什么它被视为惨败?我不应该在我的代码中使用它吗?

1 个答案:

答案 0 :(得分:72)

从我的评论中重新发布:

(我假设)他只是意味着许多(特别是新的)C ++程序员盲目地使用std::endl代替'\n'换行,不必要地频繁刷新,并可能使他们的程序性能变得糟糕。

即,大多数人都被告知std::endl 规范的方式将新行插入流中,即使它很少必要或适合于冲洗它。

有些人的意见(*咳嗽*)std::endl甚至不应该在标准中,因为它很少适合而不是重要的打字节省{{{ 1}}无论如何。


<强> TL; DR (S)的

  • 最后,'\n' << std::flush除了通常更糟糕的性能和通常更多输入外,什么都不买。
  • 它有它的用途,但是它们比大多数大型代码库中的使用频率要少得多,因此......
  • 它的实用性非常值得怀疑,其无处不在是荒谬的 - 确实是一场惨败!