【发布时间】:2014-10-13 16:20:40
【问题描述】:
如何检查创建文本文件时使用了哪个操作系统?我有 4 个文本文件,它们来自 Mac、Win、Linux 和 Dos。如果它们混合在一起,如何检查来自win、mac、linux和dos操作系统的文件?我知道如何检查 ifdefine 和 ech 等宏,但如何从 txt 文件中检测?谢谢
【问题讨论】:
-
这是不可能的。
标签: c++ linux windows macos dos
如何检查创建文本文件时使用了哪个操作系统?我有 4 个文本文件,它们来自 Mac、Win、Linux 和 Dos。如果它们混合在一起,如何检查来自win、mac、linux和dos操作系统的文件?我知道如何检查 ifdefine 和 ech 等宏,但如何从 txt 文件中检测?谢谢
【问题讨论】:
标签: c++ linux windows macos dos
一种方法是查看文件的行尾。您可以区分 Windows/DOS、Unix/Linux(包括 Mac OS X)和 Mac OS 9 以及较低的行尾。
这并不能保证这些文件实际上是在这些平台上创建的,因为可以使用各种编辑器在任何现代操作系统上创建具有任何这些行结尾的文件,但这可能足以满足您的目的。
有关更多信息,请参阅有关行尾的 Wiki 文章:http://en.wikipedia.org/wiki/Newline
【讨论】:
行尾约定与平台之间没有一对一的映射。例如,GNU/Linux 和 Mac OS X 都使用 LF 作为换行符。但根据经验:
您可以在此处找到广泛的平台列表及其行尾约定:http://en.wikipedia.org/wiki/Newline
【讨论】: