所以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 需要访问文件系统。