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

ε祈祈猫儿з 提交于 2020-02-27 02:04:16

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

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

...所以我也总是这样做。 但是,我已经从工作的开发人员那里看到了很多这样的代码:

std::cout << "Test line\n";

是否有技术上的理由要优先于另一个,还是仅仅是编码风格的问题?


#1楼

如果您要使用std::endl ,则其中包含另一个函数调用

a) std::cout << "Hello\n";
b) std::cout << "Hello" << std::endl;

a)一次调用运算符<<
b)两次调用操作员<<


#2楼

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


#3楼

他们都将编写适当的行尾字符。 除了那个endl,还会导致缓冲区被提交。 您通常在执行文件I / O时不希望使用endl,因为不必要的提交会影响性能。


#4楼

我一直有只使用std :: endl的习惯,因为它很容易看到。


#5楼

假设文件以文本模式打开,那么行尾字符的变化并不重要,除非您要求输入二进制文件,否则这就是您得到的。 编译后的程序将为系统编译出正确的东西。

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

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!