"endl"和"\n"之间的区别

Naw*_*waz 7 c++ iostream newline cout endl

可能重复:
C++:"std :: endl"vs"\n"

我想知道这两种打印换行方式之间是否有任何显着差异:

cout << endl;  //approach1
cout << "\n";  //approach2
Run Code Online (Sandbox Code Playgroud)

有什么实际区别吗?

peo*_*oro 21

是的,他们是不同的.

"\n" 只是一个长度为1的字符串,它被附加到stdout.

std::endl相反,它是一个对象,它将导致追加换行符("\n")AND以刷新stdout缓冲区.因此,需要更多处理.

  • ostream也有自己的缓冲区,所以我认为控制台是线路缓冲不是唯一的因素.如果ostream在将'\n'放入缓冲区后没有刷新,控制台将永远不会看到换行符. (3认同)
  • 在我上一份工作中,一个未命名的年份,我们有一个场合(写一个大文本文件),其中从每行的endl更改为"\n"为他们做了一个非常明显的区别 - 从~2s暂停在保存时保存为无用户可检测的暂停. (3认同)