我在听 google talk by Andrei Alexandrescu on the D programming当他发表关于“endl”惨败的单行字时,语言。我只是认为 endl 是表示行尾并刷新流缓冲区的首选方式。为什么它被认为是惨败?我不应该在我的代码中使用它吗?
最佳答案
(我假设)他只是意味着许多,尤其是新的 C++ 程序员使用 std::endl
盲目地代替'\n'
对于换行符,不必要地频繁刷新,并可能使他们的程序的性能很糟糕。
也就是说,大多数人都被教导 std::endl
是在流中插入换行符的规范方法,即使它很少必要或不适合刷新它。
std::endl
是一些人的意见(*咳嗽*)甚至不应该在标准中,因为它很少适合,而且在 '\n' << std::flush
上没有显着的打字节省无论如何。
TL;DR(s):
- 最后,
std::endl
除了通常更差性能和通常更多打字之外,什么都给你。 - 它有它的用途,但它们比它在大多数大型代码库中的使用频率所暗示的要少得多,因此......
- 它的实用性值得怀疑,它的普遍存在是荒谬的——确实是一场惨败!
关于c++ - 什么是 C++ iostream endl 惨败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5492380/