如何将boost :: filesystem :: path与“..”(go up)组件转换为正确的路径

时间:2013-06-12 10:12:54

标签: c++ boost boost-filesystem

如何以下列形式转换boost :: filesystem :: path:

根/ subdir1 / subdir2 /../ some.file

为:

根/ subdir1 / some.file

可能有多个“go level up”运营商?

3 个答案:

答案 0 :(得分:1)

简短的问题,简短的回答:

随后简单地从路径中删除每个/<dirname>/..次出现。你可以很容易地使用正则表达式。

答案 1 :(得分:1)

从Boost文件系统库中查看canonical

答案 2 :(得分:0)

为什么不使用branch_path()?它返回boost :: filesystem :: path

的父目录。

示例:

 boost::filesystem::path path("root/subdir1/subdir2/some.file");
 boost::filesystem::path parent = path.branch_path().branch_path(); // "root/subdir1"
 boost::filesystem::copy(path, parent);
 boost::filesystem::remove(path.branch_path());

您可以随意使用它。