我读过 std::endl
之间的区别和 '\n'
是那个std::endl
刷新缓冲区并 '\n'
没有。不过,据我所知stdout
在 Linux 上无论如何都是行缓冲的,这是否意味着 std::cout << ... << std::endl
与std::cout << ... << '\n'
相同?
最佳答案
std::ostream os;
os << std::endl; // more concise
os << '\n' << std::flush; // more explicit about flushing
这两行具有完全相同的效果。
手动冲洗通常是在浪费时间:
如果输出流是行缓冲的,
std::cout
应该是这种情况,如果它连接到交互式终端和,实现可以检测到,然后打印\n
已经刷新。如果输出流与您之后直接读取的输入流配对(
std::cout
和std::cin
配对),则读数已经刷新。如果您没有人等待数据到达目的地,那么刷新将再次成为浪费。
关于c++ - std::endl 和 '\n' 有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64253865/