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::cin
和std::cout
是特殊的但仍然是文件(或类似文件)) 。
可能存在性能问题, std::endl
强制刷新输出流。
下一篇: Is there an implementation of std::async which uses thread pool?