C++中endl和\n有何区别?

endl是C++语言中的换行符,而由于C++中也兼容C语言,所以使用C语言中的换行符 也能起相同作用。 那么这两种换行符有何区别?存不存在 在C++中…
关注者
27
被浏览
44,037

3 个回答

Don't use endl except possibly for aesthetic reasons. ——Bjarne Stroustrup

今天被这两个东西坑了一把。

具体看C++设计者Bjarne Stroustrup怎么说:

endl会输出'\n'(题外话,\n是转义字符,字符字面值常量的一员,很多语言都支持,不是C专有),然后立即刷新缓冲区并输出到屏幕上。由于要刷新缓冲区,endl会比\n慢一点,一般不建议使用。

今天在 PTA 做题,有一题要输入输出10万行数据,怎么写都超时。折腾了半天,换了各种写法都不行,最后试着将endl换成\n,终于过了。PTA简直……明明在 rextester.com 上这两个跑起来差不多。不知道自己怎么会习惯用endl,可能出于aesthetic reasons?习惯得改了囧。

及:发现关于cout还有一个提升速度的技巧,见下

以上。

流 << std::endl 相当于输出 '\n',并刷新流。

std::endl - cppreference.com