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

标签 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

最佳答案

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

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

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

关于c++ - 用于操作 Windows 路径的跨平台库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1846450/

相关文章:

c++ - 外部 "C"导致错误 "expected ' (' before string constant"

c++ - 最快的 stride-3 收集指令序列是什么?

c++ - Boost.Asio 解析器的结果不同

c++ - boost ASIO,SSL : How do strands help the implementation?

java - 合并两个相对文件 URL

javascript - 如何使用path.resolve进行导航?

c++ - 如何使用c中的mount函数?

c++ - 我的服务器以代码 137 退出

c++ - 使用具有不同参数的 Boost Tokenizer escaped_list_separator

c++ - MS Windows 中的应用程序路径位置