Подтвердить что ты не робот

Обработка переходов между файлами

Существуют ли какие-либо автономные классы С++ GNU, которые обрабатывают сквозные пути? Мои приложения основаны на Windows и LInux. Наши файлы конфигурации относятся к другому файлу в отдельном каталоге. Я хотел бы прочитать путь для другого файла конфигурации в класс, который будет работать как на Linux, так и на Windows.

Какой класс предложит наименьший след для перевода путей для использования в любой из этих систем? Благодаря

4b9b3361

Ответ 1

Если вы не используете абсолютные пути, нет необходимости переводить вообще - Windows автоматически преобразует косые черты в обратную косую черту, поэтому, если вы используете относительные пути с разделителями пути прямой косой черты, вы будете золотыми. Вы должны действительно избегать абсолютных путей, если это вообще возможно.

Ответ 4

Есть много способов, ИМХО, правильный ответ - перепроектировать вашу программу, чтобы избежать манипуляций с путями. Я разместил здесь ответ: fooobar.com/info/286570/..., который имеет значение.

способами:

  • Добавьте параметр командной строки, который позволяет пользователю указать рассматриваемый путь вместо того, чтобы читать его из файла конфигурации.
  • Добавьте параметр командной строки, чтобы пользователь мог указать базовый путь. Пути в файле конфигурации будут интерпретироваться как расположенные под этим базовым путем.
  • Разделите файл конфигурации на три. Один файл будет иметь конфигурацию кросс-платформы, другой файл будет иметь конфигурацию только для Windows, а окончательный файл будет иметь только конфигурацию Linux. Затем пользователь может указать правильный путь для Windows и Linux. В окнах ваша программа будет читать кросс-платформенный файл конфигурации и только файл конфигурации только для Windows. В Linux он прочитает кросс-платформенный файл и только конфигурационный файл Linux.
  • Добавьте предварительную обработку в синтаксический анализ вашего файла конфигурации. Это позволит вам иметь один файл конфигурации, в котором пользователь может заставить вашу программу игнорировать некоторые строки в файле в зависимости от того, на какой ОС работает программа. Таким образом, пользователь сможет указать путь к файлу дважды. Однажды для Linux и один раз для Windows.
  • Измените дизайн так, чтобы файлы всегда находились в том же каталоге, что и ваш исполняемый файл, - тогда пользователь указывает только имена файлов в файле конфигурации, а не пути к файлам.
  • Используйте простую функцию, которая переключает "/" на "\". Затем документируйте пользователю, что они должны указывать пути как пути Linux, и это преобразование будет применяться для окон.
  • Создайте свой собственный мини-язык для этого и запишите его пользователю. Например: "/" - указывает разделитель каталогов, {root} - расширяется до корня файловой системы, {cwd} - расширяется до текущего каталога, {app} - расширяется до пути к вашему приложению и т.д. Затем пользователь может указать пути к файлам, например: {root}/myfiles/bob.txt на обеих платформах.
  • Некоторые пути будут работать на обеих платформах. Например: относительные пути, такие как файлы.. /my/bill.txt. Ограничьте ваше приложение только работой с этими путями. Документируйте это ограничение и как ваше приложение обрабатывает пути к пользователю.