同一文件:使用记事本与写字板打开时不同

Same file: different when opened with notepad vs. wordpad

正在使用同时使用 C# 和 C++ 的代码访问文件。当文件在记事本中打开时,它看起来像这样(左边一个整数,其余数字为双精度):

但是用写字板打开同一个文件看起来像这样(每个双精度数旁边有一个整数):

为什么它们看起来不一样?

因为记事本和写字板使用不同的方式来读取文件,显然这个文件是以一种不同的方式写入的...

这与文件中换行符的编码方式有关。 Windows 将换行符识别为由两个字符 (\r\n) 组成,而其他一些操作系统,即基于 Unix 的操作系统,仅使用 \n\r。写字板足够智能,可以识别这两种换行符类型,但记事本不能。

因为记事本和 WorkPad 理解\r\n不同

记事本和写字板对 "new line" 的处理方式不同 - 一个只接受 \n,另一个需要 \r\n 才能识别 "new line"(有些可以接受 \n\r).

许多其他编辑器也是如此。 IE。如果您尝试在 Visual Studio 中打开文件,它可能会询问类似 "Do you want to convert Unix new lines to Windows new lines".

的内容

如果您使用 C# 编写文件,请使用 WriteLine 而不是手动添加 \n 或至少使用 Envirnment.NewLine 将 "new line" 写入流。

类似地,在 C++ 中,如果您必须在记事本或其他需要此类序列的编辑器中打开文件,则可以编写“\r\n”而不仅仅是“\n”(大多数 editors/viewers 都可以两者之一)。