【问题标题】:boost filesystem 3 path inclusion check提升文件系统 3 路径包含检查
【发布时间】:2012-02-24 08:28:48
【问题描述】:

我正在使用 boost 文件系统库,并且有两个路径,我需要知道是否有一种优雅的方法来检查 path1 是否是 path2 的子节点(例如 path1 = /usr/local,path2 = /usr) .我可以通过使用字符串函数来做到这一点,但我想知道是否有使用 boost 文件系统函数的方法。我可以用路径迭代器做到这一点,这是唯一的方法吗?是否有一些辅助功能可以检查?我搜索了文档,但找不到任何东西。 谢谢

【问题讨论】:

    标签: c++ boost boost-filesystem


    【解决方案1】:
    *path1.begin() == *path2.begin()
    

    然而,这意味着“c:/foo”与“c:/bar”共享一个基数,这可能是无意的。

    for( boost::filesystem::path::iterator itrLeft( path1.begin() ), itrRight( path2.begin() ); *itrLeft == *itrRight && itrLeft != path1.end() && itrRight != path2.end(); ++itrLeft, ++itrRight ) 
    

    这样你可以看到有多少原子匹配,如果你想让它变得健壮,我建议先使用 boost::filesystem::absolute。

    【讨论】:

    • OP 显然是在询问使用路径迭代器以外的另一种方法
    • 哎呀,好吧,既然你提到了它。然而,非常奇怪的限制。
    • 我猜使用字符串不是那么可靠,所以最好的方法似乎是迭代器..
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-19
    • 1970-01-01
    • 1970-01-01
    • 2020-02-21
    • 2011-07-14
    相关资源
    最近更新 更多