Файлы в каталоге в С++
Как получить все файлы в заданной директории с помощью С++ в 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 обеспечивает практически то же самое.