Я пишу кроссплатформенное приложение, которое должно проверять и манипулировать путями 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
.