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

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

【问题讨论】:

  • 这是不可能的。

标签: c++ linux windows macos dos


【解决方案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

    【讨论】:

      猜你喜欢
      • 2012-08-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-17
      • 1970-01-01
      • 1970-01-01
      • 2012-02-05
      相关资源
      最近更新 更多