Кроссплатформенная библиотека для управления путями Windows?

StackOverflow https://stackoverflow.com/questions/1846450

Вопрос

Я пишу кросс-платформенное приложение, которое должно проверять и манипулировать путями Windows.

В частности, для конкретной проблемы, с которой я столкнулся сейчас, мне нужно знать, является ли путь абсолютным или относительным.

Текущий код использует boost::filesystem::path что, конечно, прекрасно работает в Windows:

boost::filesystem::path the_path(the_path_as_a_string);
if (!the_path.has_root_path()) { /* do stuff */ }

Проблема с этим подходом заключается в том, что boost::filesystem::path имеет только два режима:родной и портативный.Это означает, что грамматика пути Windows недоступна при компиляции под Linux (это #ifdefопубликовано в источнике).Следовательно, путь «C:\path» считается абсолютным в Windows, но относительным в Linux.


Можете ли вы, ребята, порекомендовать кроссплатформенную библиотеку C++, которая может проверять и манипулировать путями Windows?


На данный момент единственная операция Windows, которую я буду выполнять, — это проверять, является ли путь абсолютным или нет.

Критерий, который я буду использовать для абсолютного пути, заключается в том, что он содержит букву диска и путь начинается с \.Примером абсолютного пути по этому критерию является C:\path.Это оба примера относительных путей по этому критерию: C:path, \path.

Это было полезно?

Решение 2

Кажется, сложно найти для этого библиотеку.Одна из возможностей заключается в PathIsRelative в Winelib, но я не хочу использовать Winelib.

В итоге я принял очень конкретное решение только для решения этой маленькой вещи.Если предположить, что путь правильный (в моем случае это справедливо), абсолютный путь будет содержать :\, а относительный путь — нет.

Итак, плохое, но рабочее решение:Нет подходящей библиотеки.Проверьте наличие :\.

Другие советы

А как насчет QT с QFileInfo ?

Не могли бы вы рассказать, что программа должна делать с путями Windows в Linux?

Возможно, достаточно применить некоторое простое преобразование к строке пути Windows, синтаксически преобразуя ее в путь Unix, а затем использовать boost::filesystem для управления ею.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top