可能重复:
std::endl 在每个平台上究竟代表什么?
我试图弄清楚 std::endl 是否返回\r\n
,\n
或\r
取决于平台,或者它是否一直坚持下去。
std::endl
只是 . 的“简写” '\n' << std::flush
。它不依赖于平台。
但是,如果流以文本模式打开,则'\n'
其本身在每个平台上的处理方式不同,并且会被替换为'\r\n'
, '\n'
, or '\r'
(或类似的东西)。
'\n' 输出一个换行符(在适当的平台特定表示中,因此它在 Windows 上生成一个“\r\n”)。std::endl 做同样的事情并刷新它。
使用 '\n' 代替 std::endl; 尝试输出换行符时,但std::endl
在尝试刷新时使用。不必要的刷新会降低应用程序的性能,因为我们都知道文件 i/o 是除用户 i/o 之外最慢的操作之一。