0

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

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

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

问题是,当我输出“p”时,它会向我显示“../”仍然附加的路径。每次我决定返回一个目录时,我如何对此进行评估。我想返回一个目录以使路径更短-而不是每次都使路径变得越来越长。

我认为其中一个函数可能会这样做,因为它们通过引用获取路径,
boost::filesystem::absolute(...)
boost::filesystem::canonical(...)
但是在调用它们并重新输出“p”之后,结果仍然显示“../”;

path& make_preferred()也不起作用。

4

1 回答 1

1

canonical或者absolute是这样做的方法。你使用返回的路径吗?给定的路径被当作一个常量引用,所以它不会被修改。从升压手册:

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 转换为没有符号链接、点或点-点元素的绝对路径。

于 2013-09-28T22:35:50.933 回答