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

最佳答案

*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。

09-06 12:57