C++ 从文本文件检查操作系统

Posted

技术标签:

【中文标题】C++ 从文本文件检查操作系统【英文标题】:C++ check OS from text file 【发布时间】:2014-10-13 16:20:40 【问题描述】:

如何检查创建文本文件时使用了哪个操作系统?我有 4 个文本文件,它们来自 Mac、Win、Linux 和 Dos。如果它们混合在一起,如何检查来自win、mac、linux和dos操作系统的文件?我知道如何检查 ifdefine 和 ech 等宏,但如何从 txt 文件中检测?谢谢

【问题讨论】:

这是不可能的。 【参考方案1】:

一种方法是查看文件的行尾。您可以区分 Windows/DOS、Unix/Linux(包括 Mac OS X)和 Mac OS 9 以及较低的行尾。

Windows/DOS:行尾的 CRLF 字符 Unix/Linux (OS X):行尾的 LF 字符 Mac OS 9 及更低版本:CR 字符用于行尾

这并不能保证这些文件实际上是在这些平台上创建的,因为可以使用各种编辑器在任何现代操作系统上创建具有任何这些行结尾的文件,但这可能足以满足您的目的。

有关更多信息,请参阅有关行尾的 Wiki 文章:http://en.wikipedia.org/wiki/Newline

【讨论】:

【参考方案2】:

行尾约定与平台之间没有一对一的映射。例如,GNU/Linux 和 Mac OS X 都使用 LF 作为换行符。但根据经验:

如果 LF 前面有 CR,则文件使用 DOS 行结束约定 (Windows) 如果行由唯一的 LF 分隔,则使用 Unix 行结束约定 (Linux/Mac OS X) 最高版本 9 的 Mac OS 使用单独的 CR

您可以在此处找到广泛的平台列表及其行尾约定:http://en.wikipedia.org/wiki/Newline

【讨论】:

以上是关于C++ 从文本文件检查操作系统的主要内容,如果未能解决你的问题,请参考以下文章

如何从文本文件 C++ 创建对象?

在文本文件 C++ 上返回一行

mfc c++ 从编辑控件更新文本文件

如何用两列 C++ 从文本文件中填充向量

从文本文件中打印字符串和整数 (C++)

将文本文件 C++ 从特定行解析到特定行