Нет необходимости использовать стороннюю библиотеку для этого. Это короткая независимая функция, которая перечисляет все файлы (с их путями) в каталоге, включая файлы подкаталогов. std::string folderName
должен заканчиваться на \
, и если вы хотите перечислить все файлы на компьютере, просто создайте цикл в вызывающей функции вместе с GetLogicalDriveStrings (Возвращает строки с \
, поэтому в этом случае удобнее).
void FindAllFiles(std::string folderName)
{
WIN32_FIND_DATA FileData;
std::string folderNameWithSt = folderName + "*";
HANDLE FirstFile = FindFirstFile(folderNameWithSt.c_str(), &FileData);
if (FirstFile != INVALID_HANDLE_VALUE) {
do {
if (strcmp(FileData.cFileName, ".") != 0 && strcmp(FileData.cFileName, "..") != 0)
{
if(FileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
{
std::string NewPath = folderName + FileData.cFileName;
NewPath = NewPath + "\\";
FindAllFiles(NewPath);
}
else
{
std::cout /*<< folderName*/ << FileData.cFileName << std::endl;
}
}
} while(FindNextFile(FirstFile, &FileData));
}
}
Это версия ASCII, помните, что файлы и папки могут быть названы в Unicode