gpt4 book ai didi

windows - 使用 boost::filesystem::path 作为 std::map 中的键

转载 作者:可可西里 更新时间:2023-11-01 09:30:24 25 4
gpt4 key购买 nike

所以 std::map 想要对键类型进行排序,但我遇到了问题:

"a/b"< "a/c"< "a//b"但是 fs::equivalent("a/b", "a//b")

"a/b"< "a/c"< "a\b"但是 fs::equivalent("a/b", "a\b")

如何规范化路径以创建排序?这可能吗?我尝试在自定义比较运算符中使用 path::generic_string(),但没有成功。 fs::equivalent() 也无济于事,因为实现平等对于 std::map 来说还不够,它需要一个排序。这也是为什么这个问题不是 How do I "normalize" a pathname using boost::filesystem? 的重复问题的原因。 .

上下文:仅限 Windows,Boost 1.49,文件系统 3。

最佳答案

要使路径具有可比性,您需要将它们转换为规范 表示,然后通过字符串进行比较。规范路径是绝对的、规范化的并且删除了符号链接(symbolic link)。 Boost 提供规范的 AFAIK。因为需要解析符号链接(symbolic link),所以调用规范需要访问文件系统。

关于windows - 使用 boost::filesystem::path 作为 std::map 中的键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13762113/

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