所以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,filesystem3。
答案 0 :(得分:2)
要使路径具有可比性,您需要将它们转换为规范表示,然后通过字符串进行比较。规范路径是绝对的,规范化的并且删除了符号链接。 Boost提供规范的AFAIK。由于需要解析符号链接,因此调用规范需要访问文件系统。