正在使用 C# 和 C++ 访问代码中的文件。当文件在记事本中打开时,它看起来像这样(左边一个整数,其余数字是双精度数):
但是用写字板打开同一个文件时看起来像这样(每个双精度数旁边一个整数):
为什么它们看起来不一样?
它与文件中换行符的编码方式有关。Windows 将换行识别为由两个字符 ( \r\n
) 组成,而其他一些操作系统,即基于 Unix 的操作系统,仅使用\n
or \r
。写字板足够聪明,可以识别这两种换行符类型,但记事本不是。
因为记事本和写字板使用不同的方式来读出文件,所以这个文件的写入方式显然是不同的......
因为记事本和 WorkPad 理解 \r\n 不同
记事本和写字板对“新行”的处理方式不同——一个只接受\n
,另一个需要\r\n
识别“新行”(有些可以接受\n\r
)。
许多其他编辑器也是如此。即,如果您尝试在 Visual Studio 中打开该文件,它可能会询问“是否要将 Unix 新行转换为 Windows 新行”之类的问题。
如果您使用 C# 编写文件,WriteLine
而不是手动添加\n
或至少使用Envirnment.NewLine将“新行”写入流。
同样,在 C++ 中,如果您必须在记事本或其他需要此类序列的编辑器中打开文件(大多数编辑器/查看器都可以),则可以编写“\r\n”而不仅仅是“\n”。