Linux — C ++ проверить ОС из текстового файла

Как проверить, какая из операционных систем использовалась при создании текстового файла? У меня есть 4 текстовых файла, и они из Mac, Win, Linux и Dos. Как проверить, какие файлы из Win, Mac, Linux и DOS OS, если они смешаны? Я знаю, как проверить с помощью макросов, как ifdefine и ech, но как определить из файла txt? Спасибо

0

Решение

Один из подходов заключается в просмотре концов строк для файлов. Вы можете различить 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)
  • Mac OS до версии 9 использовала единственный CR

Вы можете найти обширный список платформ и их соглашения о конце строки здесь: http://en.wikipedia.org/wiki/Newline

1

По вопросам рекламы [email protected]