我如何遍历目录?

如果我有一个文件夹,有5个子文件夹,我想search每个子文件夹(我的程序存在于主文件夹内)中的某些文件。 如何使我的程序遍历C ++中的文件夹?

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

谢谢!

最明显的路线是使用FindFirstFileFindnextFile ,以及SetCurrentDirectory 。 遍历子目录的一个显而易见的方法是让你的目录遍历例程递归。

只需使用boost的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. } 

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

这样你可以(尽可能小的堆栈)遍历任何树状结构(而Windows的文件系统是树状的)。