如何避免在boost :: filesystem :: path中存储重定向?

时间:2013-09-28 22:26:30

标签: string boost path boost-filesystem

我正在使用Boost::Filesystem遍历Linux中的目录。

每当我需要将路径重新定义为一个目录时,我会做类似的事情:

auto p = boost::filesystem::current_path();
p /= "../";

问题是,当我输出'p'时,它会显示“../”仍在添加的路径。 每次我决定返回目录时,如何评估此评估。我想返回一个目录以缩短路径 - 而不是每次都使路径越来越长。

我认为这些功能中的一个可能会这样做,因为它们通过引用采取路径,
boost::filesystem::absolute(...)
boost::filesystem::canonical(...)
但在调用它们并重新输出'p'后,结果仍显示“../";

path& make_preferred()也不起作用。

1 个答案:

答案 0 :(得分:1)

canonicalabsolute是实现目标的方法。你使用返回的路径吗?给定路径作为常量引用,因此不会对其进行修改。从增强手册:

path canonical(const path& p, const path& base = current_path());
path canonical(const path& p, system::error_code& ec);
path canonical(const path& p, const path& base, system::error_code& ec);
  

概述:将必须存在的p转换为具有的绝对路径   没有符号链接,点或点点元素。