许多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
。
来源:oschina
链接:https://my.oschina.net/stackoom/blog/3156450