boost::filesystem::recursive_directory_iterator 带过滤器 [英] boost::filesystem::recursive_directory_iterator with filter

查看:96
本文介绍了boost::filesystem::recursive_directory_iterator 带过滤器的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我需要递归地从目录及其子目录中获取所有文件,但不包括几个目录.我知道他们的名字.是否可以使用 boost::filesystem::recursive_directory_iterator ?

I need to recursively get all files from directory and it's subdirectory, but excluding several directory. I know their names. Is it possible to do with boost::filesystem::recursive_directory_iterator ?

推荐答案

是的,在遍历目录时,您可以测试排除列表中的名称并使用 no_push() 成员递归迭代器以防止它进入这样的目录,例如:

Yes, while iterating over directories, you can test for the names on your exclusion list and use the no_push() member of the recursive iterator to prevent it from going into such a directory, something like:

void selective_search( const path &search_here, const std::string &exclude_this_directory)
{
    using namespace boost::filesystem;
    recursive_directory_iterator dir( search_here), end;
    while (dir != end)
    {
        // make sure we don't recurse into certain directories
        // note: maybe check for is_directory() here as well...
        if (dir->path().filename() == exclude_this_directory)
        {
            dir.no_push(); // don't recurse into this directory.
        }

        // do other stuff here.            

        ++dir;
    }
 }

这篇关于boost::filesystem::recursive_directory_iterator 带过滤器的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆