考虑UNIX,Windows和Mac以及输出流(二进制和文本),
什么std::endl代表,即<CR><LF>,<LF>或<CR>?或者无论平台/编译器是什么,它总是一样的吗?
我问的原因是我正在编写一个TCP客户端,该客户端会讨论一个期望每个命令结束的协议<CR><LF>.所以我想知道是否使用std::endl或"\r\n"在我的流中.
编辑:好的,所以一个冲洗缓冲区而另一个没有.我明白了.但是,如果我将文本输出到文件,'\n'等于<LF>或者是否<CR><LF>在Windows上和<LF>Unix 上进行转换?我还没有看到明确的答案.
这是一个非常基本的概念,但我从来没有能够很清楚地表达出来.我想拼写它,看看我哪里出错了.
如果必须,我将如何定义"换行符".如果我在unix(或windows)中创建一个新文件,那么该文件通过在名为"new line character"的文件中插入一个特殊字符来存储"行尾"信息.如果是这样,它的ascii值是多少?我记得在C程序中,我已经检查了符号'\n'的读取字符.为什么这个令人困惑的2个字符代表行尾字符..
bash$ cat states
California
Massachusetts
Arizona
Run Code Online (Sandbox Code Playgroud)
说,我想在行之间插入一个行间距,并希望输出表格:所需的输出:
California
Massachusetts
Arizona
bash$sed -e 's/\n/\n\n/g' states does not work.
Run Code Online (Sandbox Code Playgroud)
为什么我不能在这里对待"新行字符"就像我会对待任何其他字符并运行类似上面命令的东西一样.(我知道有人可能会说这是sed的语法问题,但是请一个人解释一下不允许这样做的直觉,这样我就可以摆脱困惑.
同样,在vim编辑器中,我不能使用:%s/\n/\n \n/g.为什么这样?
我是否需要通过在sed和vim中使用反斜杠来进一步逃脱?
谢谢,
Jagrati