【问题标题】:Is lexically_normal() redundant on a call to std::filesystem::canonical() or std::filesystem::weakly_canonical()?lexically_normal() 在调用 std::filesystem::canonical() 或 std::filesystem::weakly_canonical() 时是多余的吗?
【发布时间】:2020-09-25 12:08:58
【问题描述】:

在这两种情况下是否有理由调用 lexically_normal:

std::filesystem::path filepath = someFuntionThatGetsAPath();

filepath = std::filesystem::canonical (filepath).lexically_normal ();
filepath = std::filesystem::weakly_canonical (filepath).lexically_normal ();

我在代码库中看到了这一点,但我不确定是否有必要。我假设规范和弱规范不会失败并已经返回规范化路径。

谢谢

【问题讨论】:

  • 看起来是多余的,但实现有缺陷(并且受到标准变化的影响)

标签: c++ c++17 std-filesystem


【解决方案1】:

来自weakly_canonical的参考:

...生成的路径是正常形式的。

所以在这个函数的返回值上调用lexically_normal是没有意义的。

但是,对于canonical,生成的路径不一定是正常形式的,因此在结果上调用lexically_normal 是有意义的。

【讨论】:

  • 我也是这么想的。令人困惑的是,canonical 不会是正常形式,但weakly_canonical 会。
  • 在哪些方面是规范但不正常的?
  • @michig54 实际上我不知道为什么。似乎就是这样指定的,至少就我链接到的参考资料而言,
猜你喜欢
  • 2020-11-04
  • 1970-01-01
  • 1970-01-01
  • 2021-01-17
  • 1970-01-01
  • 1970-01-01
  • 2019-09-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多