Предположим, у меня есть папка. В этой папке существуют некоторые файлы и папки, я хочу получить доступ к папкам не к файлам. Как мне это сделать. Я знаю, что существует эта функция в C++: FindFirstFileA
и я пишу следующий код, но эта работа для файлов.Как получить доступ к папкам не к файлам в определенной папке в C++?
WIN32_FIND_DATAA ffd;
string s = "E:\\OpenCV\\SABT\\Old";
HANDLE hFind = FindFirstFileA(s.c_str(), &ffd);
if (INVALID_HANDLE_VALUE == hFind)
{
printf("no file found");
return -1;
}
if (ffd.dwFileAttributes == FILE_ATTRIBUTE_DIRECTORY)
{
do
{
std::string fn = path + ffd.cFileName;
printf("file %s\n", fn.c_str());
} while (FindNextFileA(hFind, &ffd) != 0);
}
'FindFirstFileA' является функцией API обертки для Windows, а не C++ стандартной библиотеки функций. Если вы решите использовать Windows API, вы можете избежать множества проблем, используя базовые API-интерфейсы широкого класса, основанные на 'wchar_t', то есть' FindFirstFileW' (или просто определите 'UNICODE' и напишите' FindFirstFile'). Стандартная библиотека библиотеки C++ * будет * почти оптовой заменой файловой системы Boost. Он уже доступен с Visual C++, который выглядит так, как будто вы используете. В противном случае, если он недоступен в вашем компиляторе, просто установите последнюю версию Boost. –
findfirstfile и findnextfile будут работать как для файлов, так и для папок. – Stuart
@ Пользователи и hth. Альф, ты прав. эта функция - Win API. –