我是一个新手到编程,我开始昨天自学,我已经得到的一切,但我坦率地说,不明白没有人解释std :: cout << x;和std :: cout << x << std :: endl;?
std::cout << x;
和
std::cout << x << std::endl;
之间的区别这对我来说,我要求保持安全。
我是一个新手到编程,我开始昨天自学,我已经得到的一切,但我坦率地说,不明白没有人解释std :: cout << x;和std :: cout << x << std :: endl;?
std::cout << x;
和
std::cout << x << std::endl;
之间的区别这对我来说,我要求保持安全。
endl
在流中写入新行,所以后面的输出将出现在下一行。它也刷新流的缓冲区,通常为causing a slow-down。
这种冲水意味着99%的时间,endl
是一个错误,你应该只写"\n"
(或'\n'
)。当你真的要刷新流,我觉得这是更好地做出明确的通过调用std::flush
代替:
std::cout << x << '\n' << std::flush;
至于运行时的动作推移,这相当于用std::endl
,但在以下方面使你的意图明确,这是显着优越。
只是一个观察,可能会帮助一些读者:如果你想输出某种提示方式,比如'std :: cout <<“,输入你的名字:”;',你不需要使用'endl'或'flush',然后再尝试从'std :: cin'输入,因为它们是“绑定”流并自动处理。 –
std::endl
向流中添加换行代码并刷新输出缓冲区,std::cout << x
只是打印x
。 所以,如果你有一个代码
cout << 5;
cout << 5;
这将是
为输出,但如果添加一个endl
第一cout
输出将是
我真的建议你是用'\n'
它比ENDL好过得多。
“我真的建议你使用'\ n'它比endl好得多” 更好的是什么?性能?还有什么? – KABoissonneault
性能还不够吗? –
当我得到它是免费的,这是很好的。如果可以引入其他问题,我宁愿避免它。尽管说实话,我个人使用'printf'来封装日志而不是流 – KABoissonneault
对于[进一步阅读](http://stackoverflow.com/q/213907/5583153) – Nacho
[这是我的回答](http://stackoverflow.com/a/29701830/1938163)也可能有助于理解潜力影响 –