4

我以为一个就够了。但是,当您可以简单地使用( ) 时,做CRLF( ) 有什么意义呢?通常,每当我使用字符串 (C++) 时,我都会这样做:0x0D0ACR0D

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

4 回答 4

15

请记住,这些代码都来自旧的电传打字机。这些实际上是打字机:既需要将纸张推进一行(换行),又要将打印头(在托架上)返回到纸张的左侧(回车)。

于 2011-01-27T23:00:45.723 回答
1

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

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

于 2011-01-27T22:58:11.667 回答
1

一些系统如 UNIX 和 OSX 只使用换行符,DOS 使用额外的回车以与电传打字机兼容,而 Windows 继承了该体系结构。

于 2011-01-27T22:58:37.610 回答
0

您在 Windows 上同时使用两者,因为这是 Windows 上的自定义。就是这么简单。但是您只为发往 Windows 的文件编写这两个文件。

于 2011-01-27T22:54:31.807 回答