如何避免将重定向存储在 boost::filesystem::p ath 中



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

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

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

问题是,当我输出"p"时,它会向我显示带有"../"仍然粘着。每次我决定返回目录时如何评估此值。 我想返回一个目录以使路径更短 - 而不是每次都使路径越来越长。

我认为这些函数之一可能会做到这一点,因为它们通过引用采用路径,

boost::filesystem::absolute(...)
boost::filesystem::canonical(...)但是在调用它们并重新输出"P"后,结果仍然显示"../";

path& make_preferred()也不起作用。

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 转换为具有 没有符号链接、点或点-点元素。

最新更新