我个人尝试在所有源文件的末尾放置换行符,特别是在C ++世界中,编译器会为此条件生成警告。为了确保我已经完成了这项工作,我通常只是在我编辑的每个文件的末尾找一个空白行。
也就是说,许多不同的编辑似乎对最终换行符的处理方式不同(至少在Windows上)。考虑这个示例文件(我选择显示行号):
1: One
2: Two
3: Three
4:
此文件的十六进制输出如下:
4F6E650D 0A54776F 0D0A5468 7265650D 0A
请注意,此文件中的最后一个字符对是0D0A
(\r\n
)。当我在各种编辑器或观众中打开这个文件时,他们都会做一些不同的事情:
那么,究竟什么构成了“文件末尾的换行符?”这些(和其他)应用程序的差异仅仅是解析引擎的结果吗?是否应该显示第4行是否有“正确”的答案?在我看来,显示第4行是正确的选择。
答案 0 :(得分:0)
这实际上与文件的结尾几乎没什么关系,它只是你所看到的效果。
您应该先问自己初始换行符的位置。它是在第一行的末尾,介于第一行和第二行之间,还是之前第二行?
很抱歉让你全部禅,但这基本上就是你所要求的。我一直认为是换行符"字符"成为它所遵循的行的一部分(可能基于我的C历史,fgets
等)。
但是,正如你的一些编辑似乎认为的那样,我至少可以设想它在之间的之间的观点。这意味着他们将第4行视为一条空行而没有新行,这不是我订阅的视图 - 我的观点是,如果你有一个没有墙,地板或天花板的空房间,你不能把它称为房间。