C ++:“std :: endl”vs“\ n”

许多C ++书籍包含这样的示例代码...

std::cout << "Test line" << std::endl;

...所以我也一直这样做。 但是我看到了很多来自这样的开发人员的代码:

std::cout << "Test linen";

是否有技术上的理由相对于另一个更喜欢它,还是仅仅是编码风格的问题?


假设文件在文本模式下打开,这是不变的行结束字符并不重要,除非您要求二进制文件,否则这是您所得到的。 编译后的程序会为编译的系统写出正确的内容。

唯一的区别是std::endl刷新了输出缓冲区, 'n'没有。 如果您不希望频繁刷新缓冲区,请使用'n' 。 如果你这样做(例如,如果你想获得所有的输出,并且程序不稳定),使用std::endl


差异可以通过以下来说明:

std::cout << std::endl;

相当于

std::cout << 'n' << std::flush;

所以,

  • 使用std::endl如果你想强制立即刷新输出。
  • 使用n如果您担心表现(如果您使用<<运算符则可能不是这种情况)。
  • 我在大多数线路上使用n
    然后在段落末尾使用std::endl (但这只是一种习惯,通常不是必需的)。

    与其他说法相反, n字符只有在流转到文件时才会映射到正确的平台序列末尾( std::cinstd::cout是特殊的但仍然是文件(或类似文件)) 。


    可能存在性能问题, std::endl强制刷新输出流。

    链接地址: http://www.djcxy.com/p/30753.html

    上一篇: C++: "std::endl" vs "\n"

    下一篇: Is there an implementation of std::async which uses thread pool?