提问人:Tobi Akinyemi 提问时间:7/29/2020 最后编辑:Tobi Akinyemi 更新时间:7/29/2020 访问量:276
如何在不发生突变的情况下连接到 c++ 路径?
How do I concat to c++ path without mutating?
问:
我以为我找到了正确的功能:做一些类似的事情std::filesystem::path::concat
auto b = path(C:a/b);
const auto c = b.concat(/c);
c
具有正确的值,但发生了变异(最终等于 )。b
c
我想不受影响。根据文档,相当于 .但是,没有.b
concat
operator+=
operator+
我认为这是一个奇怪的设计,因为有类似的 and where 表示子目录而不是文字 concat(如)。operator/=
operator/
/
+=
我可以在没有类似的东西的情况下做这个非突变的 concat 吗?const auto c = std::filesystem::path(b.string() + "/c")
答: 暂无答案
评论
template <typename T> std::filesystem::path concat_path(std::filesystem::path p, T && arg) { p += std::forward<T>(arg); return p; }
/
+= (concat)
p
auto a = concat_path(b, c);
auto a = b; a += c;
b
boost::filesystem::path
operator+