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

标签 c++ boost boost-filesystem

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

关于c++ - boost 文件系统 3 路径包含检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9427591/

相关文章:

c++ - 简单 boost 序列化中的未定义引用错误

c++ - 使用 boost::filesystem 时无法链接

c++ - 使用 boost::asio 进行简单的 udp 通信

c++ - 实时图像处理 : Noise in HSV image (openCV)

c++ - '' 的构造函数必须显式初始化引用成员 ''

c++ - 带有 MySQL 的组合框

c++ - 使用指针或引用返回 Boost 矩阵有优势吗?

c++ - LNK1104 无法打开文件 libboost_random-vc140-mt-1_61.lib 等

c++ - 在 std::string 变量中使用 boost 库存储文件名

c++ - 如何以阻塞方式删除文件/文件夹?