c++ - 什么是 C++ iostream endl 惨败?

标签 c++ iostream endl

我在听 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/

相关文章:

c++ - C++ 中的 bool 括号

c++ - 如何将数字数据读取为 uint8_t

c++ - long long 的二进制表示

c++ - GNU g++ 4.9.2 中的重载 endl 编译问题

c++ - 如何在 C++ 中使用嵌套类?

c++ - 免费(): in valid pointer exception - While reading a huge file using streams

c++ - atomic_compare_exchange 与互斥锁

c# - .NET 日志记录类不写

c++ - 自定义流冲洗类型

c++ - 如果 cout 丢失,循环进入无限循环