std :: experimental :: filesystem :: recursive_directory_iterator跳过文件夹及其子文件夹
我需要递归搜索文件到一个目录及其子目录中,但我想从搜索中排除一个路径(及其文件和子目录)。std :: experimental :: filesystem :: recursive_directory_iterator跳过文件夹及其子文件夹
我正在使用std::experimental::filesystem::recursive_directory_iterator
和pop()
修饰符,但它不起作用。我错在哪里?
void search(const char* pathToSearch,const char* pathToExclude){ std::experimental::filesystem::recursive_directory_iterator iterator(pathToSearch);
for (auto& p : iterator) {
if (p.path() == std::experimental::filesystem::directory_entry(pathToExclude).path()) iterator.pop();
if (fs::is_directory(p)) continue; //exclude directory from output
else std::cout << p << std::endl;
}
}
回答:
首先,对于循环基于范围的上iterator
一个隐藏的副本,而不是iterator
本身运行。如果你需要操纵迭代器被用于迭代,你需要定期for
:
for(decltype(iterator) end; iterator != end; ++iterator) { // ...
}
其次,pop
的意思是“去上一级”,但是当你比较iterator->path()
到排除的路径,你的迭代不是招” t下降到目录,所以pop
不会做正确的事情。相反,请使用disable_recursion_pending
。
以上是 std :: experimental :: filesystem :: recursive_directory_iterator跳过文件夹及其子文件夹 的全部内容, 来源链接: utcz.com/qa/262308.html