5

我正在编写一个需要检查和操作 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.

4

3 回答 3

2

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

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

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

于 2009-12-04T15:54:55.783 回答
1

QT 与QFileInfo怎么样?

于 2009-12-04T11:56:02.477 回答
0

您能否详细说明该程序对 Linux 上的 Windows 路径的作用?

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

于 2009-12-04T21:52:59.490 回答