Microsoft Visual Studio: opendir () и readdir (), как? - PullRequest
3 голосов
/ 19 мая 2009

Я использовал такой код в моем 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, но он действительно испортился, поэтому я надеюсь, что смогу использовать эти функции выше ...

Ответы [ 5 ]

14 голосов
/ 19 мая 2009

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

Вот пример MSDN , который делает именно то, что вы хотите.

7 голосов
/ 24 сентября 2011

Если вам нужна быстрая замена, вы также можете использовать:

http://www.two -sdg.demon.co.uk / curbralan / код / ​​Dirent / dirent.html

Простой класс, который я обнаружил, который использует POSIX API для Win32

3 голосов
/ 20 мая 2009

Отлично, в конце концов, это было не так сложно, мне пришлось использовать цикл do-while:

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

1 голос
/ 19 мая 2009

Ответ на этот вопрос во многом зависит от целевой платформы, для которой вы компилируете.

MSVC ++ - это компилятор, поэтому я предполагаю, что вы пытаетесь выполнить действия, аналогичные opendir () и readdir () на платформе Windows. В этом случае взгляните на следующие ресурсы:

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

0 голосов
/ 15 июня 2018

Другая, возможно, гораздо лучшая замена: https://github.com/tronkko/dirent

...