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

boost filesystem 3 path inclusion check

本文关键字:包含 检查 路径 文件系统 boost      更新时间:2023-10-16

我正在使用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。