Aquí te dejo una función recursiva para listar los archivos de una carpeta (y las subcarpetas) (Windows):
Código C++:
Ver originallistarDirectorio(".");
// Lista los archivos de una carpeta, usado para empaquetar
void listarDirectorio(string Cosa)
{
// Variables del sistema
WIN32_FIND_DATA findFileData;
HANDLE hFind;
/* Variable con el nombre del fichero, se añade el . para designar el fichero
actual y se coloca un * al final para decirle al programa que queremos acceder
a los archivos contenidos, no al directorio en sí */
//string Cosa = ".\\Cosita\\*";
string Buffer;
// Iniciamos la busqueda y le pasamos un valor a nuestro Handle
hFind = FindFirstFile(Cosa.c_str(), &findFileData);
// Si no existe la carpeta
if (hFind == INVALID_HANDLE_VALUE)
{
std::cout << "La carpeta Cosita no existe";
}
else
{
// Si existe, pasamos al siguiente fichero (el primero solo contiene basura)
FindNextFile(hFind, &findFileData);
// Listamos todos los ficheros restantes
while (FindNextFile(hFind, &findFileData) != 0)
{
Buffer = Cosa; // Creamos una variable de nombre con el valor del directorio
Buffer.erase(Buffer.size()-1); // Borramos el asterisco
Buffer += findFileData.cFileName;
if (GetFileAttributes(Buffer.c_str()) == FILE_ATTRIBUTE_DIRECTORY)
{
Buffer += "\\*";
listarDirectorio(Buffer);
}
else
{
cout<<Buffer<<endl;
}
}
}
}
Sustituye el cout por un remove:
http://c.conclase.net/librerias/?ansifun=remove
O su equivalente de Windows Api:
http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspx