许多C++书籍都包含这样的示例代码……
std::cout << "Test line" << std::endl;...so,我也一直这么做。但我看到了很多像这样的开发人员的代码:
std::cout << "Test line\n";有没有技术上的原因而不是另一个,或者只是编码风格的问题?
发布于 2008-10-17 21:56:50
假设文件是以文本模式打开的,那么变化的行尾字符并不重要,除非您请求二进制文件,否则将以文本模式打开文件。编译后的程序将为编译的系统写出正确的内容。
唯一的区别是std::endl刷新输出缓冲区,而'\n'不刷新。如果你不想频繁刷新缓冲区,可以使用'\n'。如果您这样做了(例如,如果您想获得所有输出,但程序不稳定),请使用std::endl。
发布于 2008-10-17 22:43:45
不同之处可以通过以下几点来说明:
std::cout << std::endl;等同于
std::cout << '\n' << std::flush;所以,
如果要强制立即刷新输出,则
std::endl。如果担心性能(如果使用<<运算符,情况可能并非如此),则\n。我在大多数线路上使用\n。
然后在段落末尾使用std::endl (但这只是一种习惯,通常不是必须的)。
与其他权利要求相反,仅当流要去往文件(std::cin和std::cout是特殊的,但仍然是文件(或类似文件))时,\n字符才被映射到行序列的正确平台末尾。
发布于 2008-10-17 21:28:21
可能存在性能问题,std::endl会强制刷新输出流。
https://stackoverflow.com/questions/213907
复制相似问题