为什么要使用endl,而不是使用换行符?

10 浏览
0 Comments

为什么要使用endl,而不是使用换行符?

这个问题已经有答案了:

\"std::endl\" vs \"\\n\"

当我可以使用\\n时,是否有理由使用endlcout一起使用?我的C++书籍建议使用endl,但我不知道为什么。难道\\n不像endl那样广泛支持,还是我漏掉了什么?

admin 更改状态以发布 2023年5月20日
0
0 Comments

endl不仅仅是\n字符的别名。当您向cout(或任何其他输出流)发送信息时,它不会立即处理和输出数据。例如:

cout << "Hello, world!";
someFunction();

在上面的示例中,有一些机会函数调用将在刷新输出之前开始执行。使用endl可以强制在执行第二个指令之前进行刷新。您也可以使用ostream::flush函数来确保该操作。

0
0 Comments

endl在流中添加'\n'并在流上调用flush()。所以

cout << x << endl;

等同于

cout << x << '\n';
cout.flush();

流可以使用内部缓冲区,当流被刷新时实际中流出缓冲区。对于cout,您可能不会注意到差异,因为它与cin以某种方式同步(链接),但对于任意流,例如文件流,在多线程程序中会注意到差异。

这里有一个有趣的讨论,关于为什么需要刷新流。

0