Уважаемое сообщество переполнения стека.
Я здесь впервые. Я нашел этот форум очень полезным в прошлом и надеюсь внести свой вклад во многих отношениях в будущем. Сейчас у меня есть проблема, с которой я не могу разобрать голову или хвост.
Я пытаюсь получить имена файлов в указанном каталоге c, используя функции FindFirstFileA, FindNextFileA и CloseFind. Я пишу код C ++ в Microsoft Visual Studio 2017 и использую UNICODE.
Я выбрал версию с суффиксом «А», а не «обычную», потому что работа с LPCWSTR показалась мне обременительной.
В настоящее время мой код для соответствующей функции выглядит следующим образом:
void MainLoop::FindFiles(std::string Directory)
{
Directory = Directory + "*";
LPCSTR Path = Directory.c_str();
LPWIN32_FIND_DATAA FileData;
HANDLE hFind;
hFind = FindFirstFileA(Path, FileData);
while (FindNextFileA(hFind, FileData) != 0)
{
Files.push_back(FileData->cFileName);
}
FindClose(hFind);
}
В этом коде есть одна «странная» вещь и одна ошибка, которая не позволяет мне компилироваться.
«странная» вещь:
Во всей документации и примерах, которые я могу найти во всех функциях FindFirstFile, говорится, что второй параметр должен быть указателем, и, таким образом, мой код должен выглядеть так: this: hFind = FindFirstFileA (Path, & FileData); Но когда я пытаюсь это сделать, компилятор говорит мне, что LPWIN32_FIND_DATAA * не совместим с LPWIN32_FIND_DATAA. Я не знаю, что там происходит, поэтому я бы оценил некоторый свет.
Фактическая ошибка не касается этого, однако:
Когда я пытаюсь запустить программу, мне выдается сообщение об ошибке, в котором говорится, что «FileData» не инициализирован, а затем отказывается запускаться. Во всех примерах, которые я видел, структура данных объявляется так же, как и я. Нет сообщений на форуме, которые я могу найти для решения моих конкретных проблем Теперь я знаю, что я опубликовал только определенную c функцию, и если вам нужно узнать больше о моей настройке, я буду рад вас заполнить. Любое понимание моей проблемы или конструктивные комментарии либо к моему посту, либо к моему код приветствуется.
С уважением
Никлас Бьоркерот