Usa FindFirstFile, FindNextFile, FindClose e la struttura WIN32_FIND_DATA (cerca su google)
esempio pratico:
Codice:
std::vector<std::string>lastTimeVector;
std::vector<std::string>dirNameVector;
void SearchDirectory(LPCTSTR szDirectory)
{
std::string strDir = szDirectory + std::string("\\*.*");
WIN32_FIND_DATA data;
HANDLE hFile = FindFirstFile(strDir.c_str(), &data);
if (hFile == INVALID_HANDLE_VALUE)
return;
do
{
// se è una directory
if( (data.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) == FILE_ATTRIBUTE_DIRECTORY)
{
SYSTEMTIME st;
FileTimeToSystemTime(data.ftLastWriteTime , &st);
TCHAR szData[256];
// Formatto la data in questo modo: ora:minuti:secondi:millisecondi giorno numeroGiorno mese anno
wsprintf(szData, "%d:%d:%d:%d %d %d %d %d", st.wHour, st.wMinute, st.wSecond, st.wMilliseconds, st.wDay, st.wDayOfWeek, st.wMonth, st.wYear);
// inserisco nei due vettori
lastTimeVector.push_back(std::string(szData));
dirNameVector.push_back( std::string(szDirectory + "\\" + data.cFileName));
// cerco nella directory per le subdirectory
SearchDirectory(std::string(strDirectory + "\\" + data.cFileName));
}
}while(FindNextFile(hFile, &data));
//chiudo l'handle
FindClose(hFile);
}
Ti ho postato semplicemente il codice per cercare le directory.
Non so se è il metodo più giusto usare due vettori distinti per il nome e per la data, dovresti mettere in ordine il vettore delle data (usa std::sort) e far corrispondere alla data il nome della directory, e quindi scrivere a schermo le prime cinque.
Cmq l'ho scritto adesso, nn ho provato a compilarlo ma dovrebbe andare

ciao