Вывод названий файлов из директории

Не работает вывод имен файлов из директории

Попробовал `

int main() {
    WIN32_FIND_DATA FindFileData;
    HANDLE hf;
    hf = FindFirstFile(L"C:/MainProject/*", &FindFileData);
    if (hf != INVALID_HANDLE_VALUE)
    {
        do
        {
            cout << FindFileData.cFileName << endl;
        } while (FindNextFile(hf, &FindFileData) != 0);
        FindClose(hf);
    }
    return 0;
}

`


Ответы (1 шт):

Автор решения: Zhihar

WinAPI функции есть в 2х вариантах: Ansi, к примеру FindFirstFileA и Unicode, к примеру FindFirstFileW

Когда вы вызываете FindFirstFile и указываете L"C:/MainProject/*", т.е. unicode-строку, то выбирается вариант unicode-функций, структур и т.д.

Т.е. FindFileData.cFileName - это unicode, и для ее отображения нужна функция std::wcout, а не std::cout

Т.е. ваш код должен быть:

int main() {
    WIN32_FIND_DATA FindFileData;
    HANDLE hf;
    hf = FindFirstFile(L"C:/MainProject/*", &FindFileData);
    if (hf != INVALID_HANDLE_VALUE)
    {
        do
        {
            std::wcout << FindFileData.cFileName << std::endl;
        } while (FindNextFile(hf, &FindFileData) != 0);
        FindClose(hf);
    }
    return 0;
}
→ Ссылка