区别:
endl除了具备\n的换行功能外,还调用输出流的flush函数,刷新缓冲区,让数据直接写入文件或者屏幕上。
例如,打开你的编译器include目录中的ostream.h文件,你就回看到类似的如下代码:... ...
... endl(ostream& os) { os << '\n' << flush; }
... ...
也就是说,endl比'\n'要多了一个“刷新”流里的缓冲的flush操作。
以文件输出流(ofstream)为例:当流的缓冲区未满时,写入'\n'的是不会马上写到文件里的,但执行endl会“强行”把缓冲区的内容写入文件中。所以,endl不仅换行,还刷新流缓冲。
根据情况选择最佳的:
如果用在输出到显示器的场合.最好用endl。如要不立即显示,并且兼顾代码的执行效率的时候,可以考虑\n,这样不刷新缓冲区,这样会更快。