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

时间:2009-12-04 11:41:19

标签: 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 */ }

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


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


目前,我要做的唯一Windows路径操作是检查路径是否绝对。

我将用于绝对路径的标准是它包含驱动器号,路径以\开头。此标准下的绝对路径示例为C:\path。这些都是此标准下相对路径的示例:C:path\path

3 个答案:

答案 0 :(得分:1)

QT与QFileInfo怎么样?

答案 1 :(得分:1)

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

我最终做了一个非常具体的解决方案,仅仅是为了决定这件小事。假设路径是正确的(在我的情况下是公平的假设),绝对路径将包含:\,而相对路径则不包含。{/ p>

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

答案 2 :(得分:0)

您能详细说明该程序对Linux上的Windows路径的意义吗?

也许将一些简单的转换应用到Windows路径字符串,从语法上将其转换为Unix路径,然后使用boost :: filesystem来操作它就足够了。