Acabo de echar un rápido vistazo a mi directorio de fragmentos. Encontrado esto:
vector<CStdString> filenames;
CStdString directoryPath("C:\\foo\\bar\\baz\\*");
WIN32_FIND_DATA FindFileData;
HANDLE hFind = FindFirstFile(directoryPath, &FindFileData);
if (hFind != INVALID_HANDLE_VALUE)
{
do
{
if (FindFileData.dwFileAttributes != FILE_ATTRIBUTE_DIRECTORY)
filenames.push_back(FindFileData.cFileName);
} while (FindNextFile(hFind, &FindFileData));
FindClose(hFind);
}
Esto le da un vector con todos los nombres de archivos en un directorio. Solo funciona en Windows, por supuesto.
João Augusto señaló en un answer:
No se olvide de comprobar después FindClose(hFind)
para:
DWORD dwError = GetLastError();
if (dwError != ERROR_NO_MORE_FILES)
{
// Error happened
}
es especialmente importante si el escaneado en una red.
Véase también [¿Cómo puedo obtener la lista de archivos en un directorio usando C o C++] (http://stackoverflow.com/questions/612097/cómo puedo obtener la lista de archivos en un directorio usando c). –