c++ - 当我可以使用换行符时,为什么要使用 endl?

标签 c++ string-formatting iostream buffering

当我只能使用 \n 时,是否有理由将 endlcout 一起使用?我的 C++ 书说要使用 endl,但我不明白为什么。是 \n 没有像 endl 那样被广泛支持,还是我遗漏了什么?

最佳答案

endl附加 '\n'到流调用flush()在流上。所以

cout << x << endl;

等价于

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

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

Here是关于为什么需要冲洗的有趣讨论。

关于c++ - 当我可以使用换行符时,为什么要使用 endl?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7324843/

相关文章:

C++ 程序没有按预期运行,double 在不应该的时候进行转换

java - 为什么当 I/O 缓冲区变空时会调用 native API?

c++ - 如何在 C++ 的不同函数中实现重定向标准输入?

c++ - execvp(),无法直接返回命令行

c++ - grpc c++ 异步服务器示例,处理状态下是否需要互斥锁?

c++ - std::bind pre-C++11 的替代方案

python - 字符串格式化自定义对象

python - 是否有一种始终以 0.x 开头的 float 字符串格式?

mysql - Django:带参数的 mysql 查询

c++ - 空析构函数导致代码缓慢?