用于操作Windows路径的跨平台库?

Mag*_*off 5 c++ boost path boost-filesystem

我正在编写一个需要检查和操作Windows路径的跨平台应用程序.

具体来说,对于我现在遇到的特殊问题,我需要知道路径是绝对的还是相对的.

当前代码使用boost::filesystem::path的当然类似于Windows上的魅力:

boost::filesystem::path the_path(the_path_as_a_string);
if (!the_path.has_root_path()) { /* do stuff */ }
Run Code Online (Sandbox Code Playgroud)

这种方法的问题在于boost::filesystem::path只有两种模式:原生模式和便携模式.这意味着当我在Linux下编译时,Windows路径语法不可用(它#ifdef在源代码中被删除).因此,路径"C:\ path"在Windows中被认为是绝对的,但在Linux中则相对.


你们能推荐一个可以检查和操作Windows路径的跨平台C++库吗?


现在,我要做的唯一Windows路径操作是检查路径是否是绝对路径.

我将用于绝对路径的标准是它包含一个驱动器号,并且路径以\.该标准下的绝对路径的示例是C:\path.这些都是这个标准下相对路径的例子:C:path,\path.

Mag*_*off 2

似乎很难为此找到一个图书馆。一种可能性是PathIsRelative在 Winelib 中,但我不想使用 Winelib。

我最终做了一个非常具体的解决方案,只是为了决定这个小事情。假设路径是正确的(在我的例子中是一个合理的假设),绝对路径将包含:\,而相对路径则不会。

因此,糟糕但有效的解决方案是:没有合适的库。检查 是否存在:\