Как пройти в каталоги? - PullRequest
1 голос
/ 27 марта 2011

Если у меня есть папка, скажем, 5 подпапок, и я хочу найти определенные файлы в каждой подпапке (моя программа присутствует в основной папке).Как заставить мою программу перемещаться в эти папки в C ++ и выходить из них?

Мне нужна программа для запуска на платформах Windows.

Спасибо!

Ответы [ 3 ]

3 голосов
/ 27 марта 2011

Наиболее очевидный маршрут - использовать FindFirstFile и FindnextFile вместе с SetCurrentDirectory. Одним из очевидных способов обхода подкаталогов является рекурсивная процедура обхода каталога.

3 голосов
/ 27 марта 2011

Просто используйте 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.
}
0 голосов
/ 27 марта 2011

Просто используйте стек и реализуйте поиск в глубину (см. Вики) http://en.wikipedia.org/wiki/Depth-first_search

Таким образом, вы можете (с минимально возможным стеком) проходить любую древовидную структуру (а файловая система Windows древовидная).

...