Используя dirent.h, но файлы пропускаются

У меня есть несколько сотен изображений в папке с именем: 1.jpg, 3.jpg, 4.jpg, 6.jpg, 8.jpg, 10.jpg, 15. jpg.... 100.jpg, 102.jpg, 103.jpg, 113.jpg так далее...

я использую dirent.h перебирать файлы, но как-то dirent.h начинается в 10.jpg и следующий файл, который он доставляет, внезапно 100.jpg а потом 102.jpg... почему он пропускает некоторые изображения?

int main (int argc, const char* argv[] )
{

cv::Mat image;

DIR *dir;
struct dirent *ent;
if ((dir = opendir ("C:\\Users\\Faraz\\Desktop\\Project\\detecting_false_positives_stuff\\face_images\\faces\\")) != NULL) {
    ent = readdir (dir);
    printf ("%s\n", ent->d_name);
    ent = readdir (dir);
    printf ("%s\n", ent->d_name);
    while ((ent = readdir (dir)) != NULL) {
        printf ("%s\n", ent->d_name);

        std::string fullPath = std::string("C:\\Users\\Faraz\\Desktop\\Project\\detecting_false_positives_stuff\\face_images\\faces\\") + ent->d_name;

        cout<<fullPath;

        image = cv::imread(fullPath);

        ...

    }
    closedir (dir);
}
return 1;

}

1 ответ

Решение

Вам придется сортировать файлы самостоятельно, если вы хотите, чтобы они были в порядке, readdir не сделаю это для вас. Смотрите также: Гарантирует ли readdir() заказ?

Другие вопросы по тегам