【发布时间】:2010-12-23 05:15:03
【问题描述】:
我正在编写一个需要检查和操作 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路径语法不可用(在源代码中是#ifdefed)。因此,路径“C:\path”在 Windows 中被认为是绝对路径,但在 Linux 中是相对路径。
你们能推荐一个可以检查和操作 Windows 路径的跨平台 C++ 库吗?
目前,我要做的唯一 Windows 路径操作是检查路径是否为绝对路径。
我将用于绝对路径的标准是它都包含驱动器号,并且路径以\ 开头。此标准下的绝对路径示例为C:\path。这些都是此标准下的相对路径示例:C:path、\path。
【问题讨论】:
-
你知道区别不在于黑白吗?考虑有效路径
C:foo.txt。它使用 C: 驱动器的当前工作目录 ! -
MSalters:我问这个问题的时候还没有想到。我试图维护的代码的原始作者似乎也没有想到这一点。现在我必须找出我们真正想要的行为......
标签: c++ boost path boost-filesystem