Microsoft Visual Studio: как opendir() и readdir()?

Я использовал такой код в своем Dev-cpp раньше:

if((dh = opendir(folder)) !== false){
    while((file = readdir(dh)) !== false){
        // do my stuff
    }
    closedir(dh);
}

Но теперь я использую MSVC++ и не знаю, как добавить туда эти файлы, я пытался скопировать туда dirent.h/dir.h/errno.h, но выдает другую ошибку, связанную с другими включенными файлами внутри этих файлов. ., и, просматривая файлы, я вижу там материал mingw, так что его компилятор связан? idk, какой компилятор использует MSVC++, но можно ли скопировать эти файлы в MSVC++ и заставить его работать?

Я попытался найти какой-нибудь код из MSDN, но он был действительно испорчен, поэтому я надеюсь, что смогу использовать эти функции выше...


person Community    schedule 19.05.2009    source источник
comment
Разве это не PHP-код? Этот оператор сравнения недоступен в C.   -  person OregonGhost    schedule 19.05.2009
comment
лол, да, я тоже это заметил, но версия C в любом случае такая же...   -  person    schedule 20.05.2009


Ответы (2)


Я бы предложил использовать FindFirstFile() и FindNextFile().

образец кода:

HANDLE hFind;
WIN32_FIND_DATA FindFileData;

if((hFind = FindFirstFile("C:/some/folder/*.txt", &FindFileData)) != INVALID_HANDLE_VALUE){
    do{
        printf("%s\n", FindFileData.cFileName);
    }while(FindNextFile(hFind, &FindFileData));
    FindClose(hFind);
}

Это действительно лучше, потому что я могу использовать "*.txt" и т. д., что значительно упрощает поиск определенных типов файлов, раньше мне приходилось писать для этого собственную функцию сопоставления: D

person Community    schedule 19.05.2009

Используйте boost::filesystem или std::filesystem, если вы используете C++17.

person Philip Taylor    schedule 18.08.2019
comment
этот ответ стоило бы разработать, поскольку С++ 17 вводит эту услугу в стандарт. Добавление кода приветствуется - person Jean-François Fabre; 03.10.2019