【发布时间】:2015-04-10 14:56:27
【问题描述】:
我个人尝试在所有源文件的末尾放置一个换行符,尤其是在 C++ 世界中,编译器会针对这种情况生成警告。为了确保我已经完成了这项工作,我通常只在我编辑的每个文件的末尾寻找一个空行。
也就是说,许多不同的编辑器似乎以不同的方式处理最后的换行符(至少在 Windows 上)。考虑这个示例文件(我选择显示行号):
1: One
2: Two
3: Three
4:
这个文件的十六进制输出如下:
4F6E650D 0A54776F 0D0A5468 7265650D 0A
请注意,此文件中的最后一个字符对是 0D0A (\r\n)。当我在各种编辑器或查看器中打开此文件时,它们都会做不同的事情:
显示第 4 行的编辑器:
- 崇高文本 3
- Visual Studio
- 记事本
不显示第 4 行的编辑器:
- SlickEdit
- vim
- WinMerge 文件查看器
- GitLab 在线查看器
那么,究竟什么是“文件末尾的换行符”?这些(和其他)应用程序的差异仅仅是解析引擎的结果吗?是否应显示第 4 行是否有“正确”答案?在我看来,显示第 4 行是正确的选择。
【问题讨论】:
标签: parsing text language-agnostic newline