boost文件系统3路径包含检查

时间:2012-02-24 08:28:48

标签: c++ boost boost-filesystem

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

1 个答案:

答案 0 :(得分: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。