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