gpt4 book ai didi

c++ - std::endl 在每个平台上究竟代表什么?

转载 作者:可可西里 更新时间:2023-11-01 14:57:25 24 4
gpt4 key购买 nike

考虑 UNIX、Windows 和 Mac 以及输出流(二进制和文本),

什么是std::endl代表,即 <CR><LF> , <LF><CR> ?或者无论什么平台/编译器,它总是一样的?

我问的原因是我正在编写一个 TCP 客户端,它讨论一个协议(protocol),该协议(protocol)期望每个命令以 <CR><LF> 结尾。 .所以我想知道是否使用 std::endl"\r\n"在我的信息流中。

编辑: 好的,所以一个刷新缓冲区而另一个不刷新。我明白了。但是,如果我将文本输出到文件,则为 '\n'等于<LF>还是转换为 <CR><LF>在 Windows 和 <LF>是否在 Unix 上?我还没有看到明确的答案。

最佳答案

代码:

stream << std::endl;

// Is equivalent to:

stream << "\n" << std::flush;

所以问题是“\n”也映射了什么。
在正常流上没有任何反应。但是对于文件流(在文本模式下),“\n”被映射到行序列的平台末尾。注意:当以文本模式从文件中读取时,read 将平台行尾序列转换回 '\n'。

因此,如果您使用的是普通流,则什么也不会发生。如果您使用的是文件流,只需确保它以二进制模式打开,这样就不会应用任何转换:

stream << "\r\n"; // <CR><LF>

关于c++ - std::endl 在每个平台上究竟代表什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1911018/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com