首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么std::filesystem::path::compare()和boost::filesystem::path::compare()不同?

为什么std::filesystem::path::compare()和boost::filesystem::path::compare()不同?
EN

Stack Overflow用户
提问于 2020-04-14 00:44:39
回答 1查看 232关注 0票数 2

给定以下代码:

代码语言:javascript
复制
  fs::path p{ "a/b/" };
  fs::path q{ "a/b/." };  
  assert(p == q);         

请注意,定义q的字符串末尾有一个额外的点。

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

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

附注:在这个问题的以前版本中,我错误地认为路径应该在比较之前被标准化。事实并非如此。尽管如此,boost和std之间的差异对我来说仍然是一个谜。

EN

回答 1

Stack Overflow用户

发布于 2020-04-14 23:27:25

简单地说,Unix上的.是一个实际的文件系统节点链接,这有时很重要。参见this stack overflow answer

编辑

然而,我不能假设知道标准委员会关于文件系统库行为的意图,我也不认为库知道太多关于Unix符号链接的行为是合理的。简而言之,这可能是,也可能不是标准措辞的怪癖,而是Boost对事情应该如何工作的看法。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61192574

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档