线路终结器

时间:2011-01-12 08:07:31

标签: c++

有什么区别:

  • \r\n - 换行,然后回车。
  • \n - 换行。
  • \r - 回程。

6 个答案:

答案 0 :(得分:3)

它们是不同系统使用的行终止符:

  • \ r \ n = Windows
  • \ n = UNIX和Mac OS X
  • \ r = Old Mac

如果要将一个文件写入文件,则应使用std::endl对其进行抽象:

std::cout << "Hello World" << std::endl;

答案 1 :(得分:2)

通常,\r字符将光标移动到行的开头,而\n将光标向下移动一行。但是,不同的平台以不同的方式解释这一点,导致恼人的兼容性问题,尤其是在Windows和UNIX之间。这是因为Windows要求\r\n向下移动一行并将光标移动到行的开头,而在UNIX上单个\n就足够了。

此外,强制性的Jeff Atwood链接:http://www.codinghorror.com/blog/2010/01/the-great-newline-schism.html

答案 2 :(得分:1)

历史信息

术语来自打字机。回到白天,当人们使用打字机写字时,当你到达一行的末尾时,你会按下打字机上的一个键,该键将机械地将滑架返回到页面的左侧并将页面送到一行。该术语由计算机采用,并表示为换行符的ascii控制代码0xa和回车符0xd。不同的操作系统以不同的方式使用它们,这会导致在Windows机器上编辑在Unix机器上编写的文本文件时出现问题,反之亦然。

实用信息

在基于Unix的计算机文本文件中,换行符由换行符0xa表示。在Windows上,使用换行符和回车符。例如,当您在Linux上编写一些代码时,其中包含以下文本模式中打开文件的内容:

fprintf(f, "\n");

底层运行时将仅向文件中插入换行符0xa。在Windows上,它将翻译\n并插入0xd0xa。代码相同但结果不同,具体取决于所使用的操作系统。但是,如果在Windows上以二进制模式打开文件,则会发生更改。在这种情况下,插入是按字面完成的,只插入换行字符。这意味着,如果输出到二进制或文本流,您询问的\r\n序列在Windows上将具有不同的表示形式。如果它是文本流,您将在文件中看到以下内容:0xd0xd0xa。如果文件处于二进制模式,那么您将看到:0xd0xa

由于操作系统在文本文件中表示换行符的方式不同,文本编辑器必须不断发展以处理它们,尽管有些(如记事本)仍然不知道该怎么做。因此,一般情况下,如果您正在使用Windows并且您获得的文本文件最初是在Unix机器上编写的,那么在记事本中编辑它并不是一个好主意,因为它会将Windows样式的回车换行符(0xd0xa)插入到当你真的想要一个0xa时的文件。对于在读取文本文件作为输入的旧Unix机器上运行的程序,这可能会导致问题。

答案 3 :(得分:0)

答案 4 :(得分:0)

不同的操作系统有不同的约定; Windows使用\ r \ n,Mac使用\ r \ n,UNIX使用\ n。

答案 5 :(得分:0)

  1. \r

    这会将光标发送到显示的开始列

  2. \n

    这会将光标移动到显示的新行,但光标与上一行保持在同一列中。

  3. \r\n

    合并1和2.光标移动到新行,它也移动到显示的第一列。

  4. 当您仅指定\n时,某些编译器会打印新行和回车符。