【发布时间】:2013-06-12 10:12:53
【问题描述】:
如何将 boost::filesystem::path 转换为:
root/subdir1/subdir2/../some.file
到:
root/subdir1/some.file
可能有多个“升级”运算符?
【问题讨论】:
标签: c++ boost boost-filesystem
如何将 boost::filesystem::path 转换为:
root/subdir1/subdir2/../some.file
到:
root/subdir1/some.file
可能有多个“升级”运算符?
【问题讨论】:
标签: c++ boost boost-filesystem
从 Boost 文件系统库中查看 canonical。
【讨论】:
简短的问题,简短的回答:
随后简单地删除路径中出现的每个/<dirname>/..。您可以轻松地使用正则表达式。
【讨论】:
<dirname>。对其进行了编辑,因此删除之前的/.. 和/<dirname> 将取消升级/降级
为什么不使用 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());
你可以随心所欲地使用它。
【讨论】: