我写了需要检查和处理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下编译(它在源#ifdefed出)。因此,路径。 “C:\路径” 被认为是在Windows绝对的,而是相对的在Linux中


你们可以推荐一个跨平台的C ++库,可以检查和处理Windows的路径?


目前,只有Windows的路径操作,我会做的是检查的路径是绝对的还是没有。

我将使用绝对路径的标准是它都包含一个驱动器号,路径以\开始。该标准下的绝对路径的一个例子C:\path。这些是相对路径的两个例子中这一标准下:C:path\path

有帮助吗?

解决方案 2

这似乎是很难找到这个库。一种可能性是在PathIsRelative Winelib,但我不希望使用Winelib。

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

因此,坏的,但工作,解决方法是:没有合适的文库。检查:\的存在。

其他提示

什么QT与 QFileInfo

您能解释一下什么程序是指具有在Linux上?

Windows的路径做

也许就足够了一些简单的改造适用于Windows的路径字符串,语法上把它变成一个Unix路径,然后使用boost ::文件系统来操纵它。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top