自从我停止使用以来已经有很多年了std::endl
写信到std::cout
,开始使用"\n"
反而。
但是现在我开始使用更多的代码段'\n'
相反,我开始想知道最好的。
除了显而易见的是一个字符串,另一个是一个字符,是否有任何优势:
std::cout << variable << '\n';
这样:
std::cout << variable << "\n";
后期加法:
当我问这个问题时,我似乎认为那是纽线'\n'
冲洗缓冲区。现在我知道了依靠。
默认情况下std::cin
被绑在旧的cstdin
FILE*
流和std::cout
与stdout
。Newline上的冲洗来自这种捆绑。默认情况下stdout
,如果连接到终端,则将被延伸。这意味着新线路将冲洗其缓冲区。因此,当使用新线打印时std::cout
,这将导致stdout
被冲洗。
如果stdout
未连接到端子(例如,输出已重定向或被管道),或者是否在std::cout
和stdout
被打破了,然后新线不会冲洗任何东西。
答案
实际上,'\n'
应该是默认值。除非您还要明确冲洗流(以及为什么何时以及为什么要这样做?),无需使用std::endl
根本。^1^
当然,许多书籍和教程使用std::endl
作为默认值。那是不幸的,可能会导致严重的性能错误。
我想使用几乎没有区别'\n'
或使用"\n"
,但是后者是(两个)字符的数组,必须按字符打印,为此必须设置循环,这比输出一个字符更为复杂。当然,在这样做时,这很少很重要,但是如果有疑问,当您想输出一个字符字面的字符时,输出字符字面意思,而不是整个字符串字面。
这样做的一个很好的副作用是您在代码中交流故意的仅输出一个字符,而不仅仅是偶然地这样做。
^1^ ^~注意std::cout
与std::cin
默认情况下,导致std::cout
在任何输入操作之前被冲洗,以便在用户必须输入某些内容之前打印任何提示。~^