当他抛出关于“endl”惨败的一个班轮时,我正在听google talk by Andrei Alexandrescu on the D programming语言。我只是认为endl是表示行结束并刷新流缓冲区的首选方式。为什么它被视为惨败?我不应该在我的代码中使用它吗?
答案 0 :(得分:72)
从我的评论中重新发布:
(我假设)他只是意味着许多(特别是新的)C ++程序员盲目地使用std::endl
代替'\n'
换行,不必要地频繁刷新,并可能使他们的程序性能变得糟糕。
即,大多数人都被告知std::endl
规范的方式将新行插入流中,即使它很少必要或适合于冲洗它。
有些人的意见(*咳嗽*)std::endl
甚至不应该在标准中,因为它很少适合而不是重要的打字节省{{{ 1}}无论如何。
<强> TL; DR 强>(S)的:强>
'\n' << std::flush
除了通常更糟糕的性能和通常更多输入外,什么都不买。