使用 boost::filesystem::p ath 作为 std::map 中的键



所以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 来说是不够的,它需要排序。这也是为什么这个问题不是如何使用 boost::filesystem "规范化"路径名?的副本的原因。

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

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

相关内容

最新更新