readdir исключает некоторые файлы в каталоге

У меня есть довольно простой кусок кода, чтобы получить список файлов в каталоге на C ++. Необъяснимо, что только 68 из 135 файлов в каталоге хранятся в векторе fileNames. Что происходит?

DIR* pDIR = opendir(directoryName.c_str());
struct dirent* entry = nullptr;

vector<string> fileNames;

while(readdir(pDIR)) {
entry = readdir(pDIR);
if (strcmp(entry->d_name, ".") != 0 && strcmp(entry->d_name, "..") != 0 )
fileNames.push_back(entry->d_name);
}
closedir(pDIR);

0

Решение

Вы исполняете READDIR 2 раза за каждую итерацию. Итак, вы пропускаете половину файлов.

Исправить несложно, просто позвоните один раз:

DIR* pDIR = opendir(directoryName.c_str());
struct dirent* entry = nullptr;

vector<string> fileNames;

while(entry = readdir(pDIR)) {
if (strcmp(entry->d_name, ".") != 0 && strcmp(entry->d_name, "..") != 0 )
fileNames.push_back(entry->d_name);
}
closedir(pDIR);
1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector