44

它们都是“新线”的意思,但是什么时候使用一个而不是另一个?

4

8 回答 8

65

\r\nWindows风格

\n是一种POSIX风格

\r是旧的pre-OS X Macs风格,现代 Mac使用POSIX风格。


\r是回车和换\n行,在没有显示器的旧计算机中,只有打印机才能将程序结果输出给用户,如果你想从左边的新行开始打印,你必须得到\n,而\r对于 get Carriage 回到最左边的位置,这是从旧电脑的语法保存到这次在Windows平台上。

于 2010-09-29T13:02:42.353 回答
9

\n 表示换行。这意味着光标必须转到下一行。

\r 表示回车。这意味着光标应该回到行首。

Unix 程序通常只需要一个新行 (\n)。

Windows 程序通常需要两者。

于 2010-09-29T13:03:58.643 回答
7

\n 只是一个换行符,\r\n 是一个换行符和一个回车符(即向左移动光标)。

于 2010-09-29T13:02:59.170 回答
3

'\n' 是 Unix 中的默认值,'\r\n' 是 Windows 中的默认值。

于 2010-09-29T13:02:38.333 回答
3

不同的操作系统以不同的方式处理换行符。以下是最常见的简短列表:DOS 和 Windows

他们希望换行符是两个字符的组合,即 '\r\n'(或 13 后跟 10)。

Unix(因此也包括 Linux)

Unix 使用单个 '\n' 来表示新行。

苹果电脑

Mac 使用单个 '\r'。

因此,当您使用文件夹路径等时,当您将应用程序从 Windows 移植到 Mac 时,这会导致问题。

于 2010-09-29T13:03:27.017 回答
2

这就是操作系统 Windows (\r\n) 和 linux (\n) 中新行的表示方式

在 Unix 上,\r 是回车符 (CR) 和 \na 换行符 (LF),它们恰好是 Windows 换行符标识符,您将用 Unix 换行符标识符替换它们。

在 Windows 上,\r 也是 CR,但 \n 是 CR 和 LF 的组合。因此,您正在尝试用 CR+LF 替换 CR+CR+LF。没有多大意义,是吗。

来自“perldoc perlop”:所有系统都使用虚拟“\n”来表示行终止符,称为“换行符”。不存在不变的物理换行符。这只是操作系统、设备驱动程序、C 库和 Perl 共同维护的一种错觉。并非所有系统都将 ""\r"" 读取为 ASCII CR,将 ""\n"" 读取为 ASCII LF。例如,在 Mac 上,这些是相反的,在没有行终止符的系统上,打印 ""\n"" 可能不会发出任何实际数据。通常,当您的系统表示“换行符”时使用“”\n“”,但在需要精确字符时使用文字 ASCII。例如,大多数网络协议期望并更喜欢 CR+LF (""\015\012"" 或 "" \cM\cJ"") 用于行终止符,尽管它们通常只接受 ""\012"",但它们很少只容忍 ""\015""。如果你养成了使用 ""\n"" 进行网络的习惯,你可能有一天会被烧死。

于 2010-09-29T13:04:42.367 回答
1

区别在于不同的操作系统,在 Windows 上,换行符\r\n在 Linux 上只是\nMac OSX 只是\r操作系统的设计者让它成为的问题

于 2010-09-29T13:03:51.623 回答
0

在 C# 中,您可以只使用 Environment.NewLine

于 2010-09-29T13:58:03.263 回答