gpt4 book ai didi

c++ - std::filesystem::path 没有运算符+?

转载 作者:行者123 更新时间:2023-12-04 12:30:15 24 4
gpt4 key购买 nike

可以到 append使用 / 连续多条路径运算符(operator):

  std::filesystem::path p1{"A"};
auto p2 = p1 / "B" / "C";
这是比较方便的。然而, concat只提供 += :
  std::filesystem::path p1{"A"};
auto p2 = p1 / "B" / "C" + ".d"; // NOT OK
这很烦人,因为我无法轻松地在路径的末尾添加扩展。我别无选择,只能写一些类似的东西
  std::filesystem::path p1{"A"};
auto p2 = p1 / "B" / "C";
p2 += ".d";
我错过了什么吗?这种不一致是否有原因?

最佳答案

这有点推测性,但我认为这样做的原因是 operator+很容易与 operator/ 混淆.如果按如下方式使用,这将导致错误

path p2{"/"};
auto p1 = p2 + "A" + "B";
// Wants /A/B, gets /AB
使用字符串文字使解决方法更好:
using namespace std::literals;
std::filesystem::path p1{"A"};
auto p2 = p1 / "B" / ("C"s + ".d");
在这里, "C"s创建一个 std::string有内容 C然后我们使用 std::stringoperator+ .如果 "C" part 本身已经是一条路径(否则你可以只写 "C.d" 开始),你可以做
std::filesystem::path p1{"A"}, c_path{"C"};
auto p2 = p1 / "B" / (c_path += ".d");
operator+=返回结果对象。 (这有点浪费,但我可以想象编译器会优化它)。

关于c++ - std::filesystem::path 没有运算符+?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65917812/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com