queue<string> dirQue; dirQue.push("C://*.*"); WIN32_FIND_DATA fileData; HANDLE hFile; while(dirQue.size() != 0) { hFile = FindFirstFile(dirQue.front().c_str(), &fileData); while(FindNextFile(hFile, &fileData)) { if((fileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) == FILE_ATTRIBUTE_DIRECTORY) { string cur = dirQue.front(); int nPos = cur.find_last_of('//'); cur.erase(nPos + 1, 3); if(strcmp(fileData.cFileName, "..") == 0) continue; cur += fileData.cFileName; cur += "//*.*"; dirQue.push(cur); } else { cout << fileData.cFileName << endl; } } FindClose(hFile); dirQue.pop(); }