如何遍历目录?

时间:2011-03-26 21:06:00

标签: c++ windows search traversal

如果我有一个文件夹,比如有5个子文件夹,我想在每个子文件夹中搜索某些文件(我的程序存在于主文件夹中)。如何让我的程序在C ++中进出这些文件夹?

我需要我的程序在Windows平台上运行。

谢谢!

3 个答案:

答案 0 :(得分:3)

最明显的途径是使用FindFirstFileFindnextFile以及SetCurrentDirectory。遍历子目录的一种显而易见的方法是使目录遍历例程递归。

答案 1 :(得分:3)

只需使用boost's recursive_directory_iterator,然后过滤所需的文件/目录。

boost::filesystem::recursive_directory_iterator iter("your\path");
boost::filesystem::recursive_directory_iterator end;
for (; iter != end; ++iter) {
    // check for things like is_directory(iter->status()), iter->filename() ....
    // optionally, you can call iter->no_push() if you don't want to
    // enter a directory
    // see all the possibilities by reading the docs.
}

答案 2 :(得分:-1)

只需使用堆栈并实施深度优先搜索(请参阅wiki)http://en.wikipedia.org/wiki/Depth-first_search

通过这种方式,您可以(使用尽可能小的堆栈)遍历任何树状结构(并且Windows的文件系统是树状的)。