Независимо от того, что на самом деле находится в папке, вы всегда предварительно заполняете вектор 1000 пустыми строками, а затем добавляете имена файлов, начиная с индекса 1000. Таким образом, строка в vector[1]
всегда пуста.
Попробуйте вместо этого что-нибудь еще:
vector<string> getAllSongs(string path) {
// can queue up up to 1000 melodii
//vector<string> songList(1000); // <-- DO NOT create 1000 empty strings!
vector<string> songList;
songList.reserve(1000); // <-- DO THIS instead!
WIN32_FIND_DATAA FindFileData;
HANDLE hFind = FindFirstFileA(path.c_str(), &FindFileData); // <-- use the ANSI function explicitly!
if (hFind == INVALID_HANDLE_VALUE) {
if (GetLastError() != ERROR_FILE_NOT_FOUND) { // <-- ADD error checking...
cout << "there is a problem with the search!";
}
}
else {
do {
if ((FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) == 0) { // <-- ADD type checking...
//cout << FindFileData.cFileName << endl; this works
songList.push_back(FindFileData.cFileName);
}
}
while (FindNextFileA(hFind, &FindFileData)); // <-- use the ANSI function explicitly!
if (GetLastError() != ERROR_NO_MORE_FILES) { // <-- ADD error checking...
cout << "there is a problem with the search!";
}
FindClose(hFind);
}
return songList;
}
vector<string> songs = getAllSongs("path\\*");
if (!songs.empty()) { // <-- ADD error checking...
cout << songs[0]; // <-- ONLY non-empty filenames exist in the vector now!
}