许多 C++ 书籍都包含这样的示例代码……
std::cout << "Test line" << std::endl;
…所以我也一直这样做。但是我已经看到很多这样的工作开发人员的代码:
std::cout << "Test line\n";
是否有技术上的理由比另一个更喜欢一个,或者这只是编码风格的问题?
原文由 Head Geek 发布,翻译遵循 CC BY-SA 4.0 许可协议
许多 C++ 书籍都包含这样的示例代码……
std::cout << "Test line" << std::endl;
…所以我也一直这样做。但是我已经看到很多这样的工作开发人员的代码:
std::cout << "Test line\n";
是否有技术上的理由比另一个更喜欢一个,或者这只是编码风格的问题?
原文由 Head Geek 发布,翻译遵循 CC BY-SA 4.0 许可协议
我从未见过有人说 '\n'
受 cout 格式的影响:
#include <iostream>
#include <iomanip>
int main() {
std::cout << "\\n:\n" << std::setw(2) << std::setfill('0') << '\n';
std::cout << "std::endl:\n" << std::setw(2) << std::setfill('0') << std::endl;
}
输出:
\n:
0
std::endl:
请注意,由于 '\n'
是一个字符并且填充宽度设置为 2,因此在 '\n'
之前只打印了 1 个零。
我在任何地方都找不到任何关于它的信息,但它可以用 clang、gcc 和 msvc 重现。
当我第一次看到它时,我非常困惑。
原文由 TheHardew 发布,翻译遵循 CC BY-SA 4.0 许可协议
3 回答2k 阅读✓ 已解决
2 回答3.9k 阅读✓ 已解决
2 回答3.2k 阅读✓ 已解决
1 回答3.2k 阅读✓ 已解决
1 回答2.7k 阅读✓ 已解决
3 回答3.4k 阅读
1 回答1.6k 阅读✓ 已解决
假设文件以文本模式打开,则不同的行尾字符无关紧要,除非您要求二进制文件,否则您会得到这样的结果。编译后的程序将为编译的系统写出正确的东西。
唯一的区别是
std::endl
刷新输出缓冲区,而'\n'
没有。如果您不想频繁刷新缓冲区,请使用'\n'
。如果这样做(例如,如果您想获得所有输出,并且程序不稳定),请使用std::endl
。