Lo que encontré fue lo siguiente:
HANDLE hFind;
WIN32_FIND_DATA w32fd;
hFind = FindFirstFile( "fonts/*.*", &w32fd );
vectorarchivos;
if( hFind!=INVALID_HANDLE_VALUE )
{
do
{
TCHAR* Tfilename = w32fd.cFileName;
if( filename.size()>3 )
{
archivos.push_back( filename );
}
}while( FindNextFile( hFind, &w32fd ) );
FindClose(hFind);
}
Esta solución funciona, aunque para mi gusto depende demasiado de las definiciones (chungas) de Microsoft.
Sin embargo, otro acercamiento mucho mas independiente del sistema sería la siguiente, que hace uso de la librería Glib, la cual forma parte de GTK+ y compone multitud de estructuras de datos y funciones preparadas para ser compatibles tanto en windows como en linux.
La solución al listado de los archivos contenidos en un directorio usando las funciones de Glib es la siguiente:
GDir* dir = g_dir_open( folder, 0, NULL );
const gchar* file;
if( !g_file_test( folder, G_FILE_TEST_IS_DIR ) )
{
g_error( "Error: Directory not found FFFFFFFFFFFFF" );
}
else
{
while( file=g_dir_read_name( dir ) )
{
cout << "Fichero encontrado: " << file << endl;
}
g_dir_close( dir );
}
En esta ocasión no dependemos de otra librería más que de glib, disponible tanto para Linux como para Windows. Además de una ganancia en la claridad del código, pues no se usa ninguna estructura extraña (de esas que tanto le gustan a Microsoft). Lo único raro que podemos ver es ese tipo de datos gchar (es simple y llanamente un char) y GDir la cual es una estructura de la que no nos tenemos que preocupar ya que de su manejo se ocupa completamente Glib.
Para más información sobre estas funciones: página de referencia.