【发布时间】:2021-01-22 23:45:19
【问题描述】:
我读过std::endl 和'\n' 之间的区别在于std::endl 会刷新缓冲区而'\n' 不会。但是,据我所知,Linux 上的stdout 无论如何都是行缓冲的,那么这是否意味着std::cout << ... << std::endl 与std::cout << ... << '\n' 相同?
【问题讨论】:
-
但是,据我所知,linux 上的 stdout 无论如何都是行缓冲的 仅当
stdout正在写入设备时。如果它被重定向到一个文件,那么它是块缓冲的。 -
并且可以使用setvbuf()轻松更改缓冲模式
-
“基本上”不用说。您没有提供差异摘要;这是的区别。可以查看the documentation; cppreference 文档首先声明
std::cout << std::endl与std::cout << '\n';相同,然后是std::cout.flush();。