使用*两个*回车和换行有什么意义?

时间:2011-01-27 22:52:29

标签: history carriage-return linefeed

我认为一个就够了。但是,当你可以简单地使用CRLF0x0D0A)时,做CR0D)的重点是什么?通常,每当我使用字符串(C ++)时,我都这样做:

myString = "Test\nThis should be a new line!\nAnother linefeed.";

注意:对于阅读此内容的非C ++程序员,"\n"是换行符(0x0A)。

但我真的应该这样做:

myString = "Test\r\nThis should be a new line!\r\nAnother carriage return/linefeed pair.";

注意:"\r"表示回车(0x0D)。


编辑:这应该在Programmers.SE上吗?

4 个答案:

答案 0 :(得分:15)

请记住,这些代码都来自旧的Teletype机器。这些都是有效的打字机:必须通过一条线(换行)推进纸张,还需要将打印头(在滑架上)返回到纸张的左侧(回车)。

答案 1 :(得分:1)

Windows / Unix /旧Mac系统有各种不同的方式在文本文件中写入新行(而不是二进制文件)。如果您在Windows下编程,那么在二进制模式下,您将阅读(并且您可能想要编写)CRLF结尾。在类似unix的系统下,它只是LF。

如果你处理自己的数据格式......你选择哪种方式并不重要。这完全取决于你想要用字符串做什么以及你从哪里得到它。

答案 2 :(得分:1)

UNIX和OSX等系统只使用换行,DOS使用了额外的回车符,以便与电传打字机兼容,Windows继承了该架构。

答案 3 :(得分:0)

您在Windows上使用它们,因为这是Windows上的自定义。就这么简单。但是你只能为发往Windows的文件写两个。