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

Как получить все файлы в заданной директории с помощью С++ в Windows?

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

Спасибо

Ответы

Ответ 1

Используйте 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);
}

Ответ 2

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

Ответ 3

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

Для полного кода посмотрите на этот пример: Список файлов в каталоге

Ответ 4

Принятый стандарт для С++ описан в N1975 ИСО/МЭК TS 18822: 2015, последний черновик N4100. Возможно, у вашего компилятора это еще не было, и в этом случае Boost.FileSystem обеспечивает практически то же самое.