gpt4 book ai didi

c++ - 为什么 std::filesystem::path::compare() 和 boost::filesystem::path::compare() 不同?

转载 作者:行者123 更新时间:2023-12-01 14:52:59 26 4
gpt4 key购买 nike

给定以下代码:

  fs::path p{ "a/b/" };
fs::path q{ "a/b/." };
assert(p == q);

[注意定义 q 的字符串末尾的额外点。]

如上所述,boost::filesystem 接受 p == q 为真,但 gcc 和 llvm 的 std::filesystem 实现说它是假的。

为什么 boost 和 std 之间存在差异?

附言在这个问题的先前版本中,我错误地认为在比较之前应该对路径进行规范化。事实并非如此。即便如此,boost 和 std 之间的差异对我来说仍然是个谜。

最佳答案

简短的回答是 .在 Unix 上是一个实际的文件系统节点链接,这有时很重要。见 this stack overflow answer .

编辑

但是,我不能假定知道标准委员会关于文件系统库行为的意图,我也不认为库对 Unix 符号链接(symbolic link)行为了解那么多是合理的。简而言之,这可能只是也可能不仅仅是标准措辞与 Boost 对事情应该如何工作的看法的一个怪癖。

关于c++ - 为什么 std::filesystem::path::compare() 和 boost::filesystem::path::compare() 不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61192574/

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