Mag*_*off 5 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 */ }
Run Code Online (Sandbox Code Playgroud)
这种方法的问题在于boost::filesystem::path只有两种模式:原生模式和便携模式.这意味着当我在Linux下编译时,Windows路径语法不可用(它#ifdef在源代码中被删除).因此,路径"C:\ path"在Windows中被认为是绝对的,但在Linux中则相对.
你们能推荐一个可以检查和操作Windows路径的跨平台C++库吗?
现在,我要做的唯一Windows路径操作是检查路径是否是绝对路径.
我将用于绝对路径的标准是它包含一个驱动器号,并且路径以\.该标准下的绝对路径的示例是C:\path.这些都是这个标准下相对路径的例子:C:path,\path.
似乎很难为此找到一个图书馆。一种可能性是PathIsRelative在 Winelib 中,但我不想使用 Winelib。
我最终做了一个非常具体的解决方案,只是为了决定这个小事情。假设路径是正确的(在我的例子中是一个合理的假设),绝对路径将包含:\,而相对路径则不会。
因此,糟糕但有效的解决方案是:没有合适的库。检查 是否存在:\。
| 归档时间: |
|
| 查看次数: |
1402 次 |
| 最近记录: |