std::filesystem не отображает все файлы в некоторых директориях

Рейтинг: 0Ответов: 0Опубликовано: 07.06.2023

Господа, у меня код не отображает все файлы, находящиеся в определенных папках (не во всех, обычно, где много файлов). Читал несколько статей с похожей проблемой и я так понял дело в скрытых файлах windows, об которые "спотыкается" iterator, хотя ошибки явной компилятор не выдает. Пробовал несколько вариантов:

  1. Пробовал решить эту проблему одной из перегрузок рекурсивного итератора директории - "directory_options::skip_permission_denied", но результат тот же.
  2. Также думал, что дело в кодировках, поэтому добавил всевозможные сетлокали и SetConsoleCP. Тоже дело не в этом
  3. Пробовал название каждого файла пушить в вектор - ничего.

код:

SetConsoleCP(1251);
setlocale(LC_ALL, "RUS");

char folderpath[100];
cout << "Path: >> ";
cin.getline(folderpath, 100000);

wstring name;
wstring extension;

for (const auto& p : fs::recursive_directory_iterator(folderpath, fs::directory_options::skip_permission_denied))
    {
        if (!p.is_regular_file())
        {
            continue;
        }

        name = p.path().filename();
        extention = name.substr(name.find_last_of('.'));

        wcout << i++ << " " << name << " " << extention << p.file_size() << endl;
    }

Сразу оговорюсь, я понимаю, что дело не в лыжах - сам дурак, подскажите только куда воевать.

Ответы

Ответов пока нет.