我正在使用Boost::Filesystem遍历Linux中的目录。
每当我需要将路径重新定义为一个目录时,我会做类似的事情:
auto p = boost::filesystem::current_path();
p /= "../";
问题是,当我输出'p'时,它会显示“../”仍在添加的路径。 每次我决定返回目录时,如何评估此评估。我想返回一个目录以缩短路径 - 而不是每次都使路径越来越长。
我认为这些功能中的一个可能会这样做,因为它们通过引用采取路径,
boost::filesystem::absolute(...)
boost::filesystem::canonical(...)
但在调用它们并重新输出'p'后,结果仍显示“../";
path& make_preferred()
也不起作用。
答案 0 :(得分: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转换为具有的绝对路径 没有符号链接,点或点点元素。