Файлы в каталоге в C ++ - PullRequest
       306

Файлы в каталоге в C ++

14 голосов
/ 05 июля 2010

Как получить все файлы в данном каталоге, используя C ++ для Windows?

Примечание:Я нашел методы, которые используют dirent.h, но мне нужен более стандартный способ ...

Спасибо

Ответы [ 4 ]

30 голосов
/ 05 июля 2010

Использование FindFirstFile и связанных функций.Пример:

HANDLE hFind;
WIN32_FIND_DATA data;

hFind = FindFirstFile("c:\\*.*", &data);
if (hFind != INVALID_HANDLE_VALUE) {
  do {
    printf("%s\n", data.cFileName);
  } while (FindNextFile(hFind, &data));
  FindClose(hFind);
}
10 голосов
/ 05 июля 2010

А как насчет библиотеки boost: файловая система. Boost.org

5 голосов
/ 05 июля 2010

Вы должны использовать функцию FindFirstFile ( задокументировано здесь ). Это стандартный (и предпочтительный) способ в Windows , однако он не переносимый. Заголовок dirent.h, который вы нашли, содержит определение стандартных функций POSIX .

Полный код приведен в следующем примере: Список файлов в каталоге

4 голосов
/ 05 июля 2010

Принятый стандарт для C ++ описан в N1975 ISO / IEC TS 18822: 2015, последняя версия N4100 . Ваш компилятор может еще не иметь его, и в этом случае Boost.FileSystem обеспечивает практически то же самое.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...