为什么"\n"在Windows上提供了一个新行?

use*_*613 22 .net c# windows newline

Windows上的换行标记应该是CR+LF在Unix上,它只是LF.

因此,当我使用类似的东西时Console.Write("line1\nline2");,为什么它会"正常"工作并给我两行?我希望这\n不起作用,只有一个组合\r\n可行.

Eri*_* J. 21

'\n'是换行符.传统上,它导致打印机将纸张卷起一行.'\ r'是回车符,传统上会导致打印头移动到纸张的最左边缘.

在以这种方式解释字符的打印机和控制台上,输出'\n'将是

line1
     line2
Run Code Online (Sandbox Code Playgroud)

许多控制台(和编辑器)会将'\n'解释为您想要开始一个新行并将光标定位在该新行的开头.这就是你在这里看到的.

您应该使用Environment.NewLine而不是硬编码任何特定常量.


Dav*_*nan 12

这只是底层Windows控制台的标准行为.如果输出0x0A到控制台,本机C应用程序将完全相同.

当然,你应该用 Environment.NewLine你的新线. 在Windows和Unix系统上Environment.NewLine解析.\r\n\n


Yog*_*her 5

我参加聚会已经迟到很多年了。然而,https://en.wikipedia.org/wiki/Newline对 NEWLINE 转义序列如何在编程语言和文本/二进制输出的上下文中工作有很好的解释。

归结为这一点 - 大多数编程语言在编写文本时将“\n”翻译为本机平台的 NEWLINE 序列。并且,在读取文本时将本机平台的 NEWLINE 序列翻译为“\n”。