Можно ли изменить порядок файлов при итерации каталога с использованием boost::filesystem?

Я унаследовал некоторый код, используя буст directory_iterator:

for (directory_iterator fileIt{currDir}; fileIt != directory_iterator{}; ++fileIt) {
  // Do stuff with files
}

и я хотел бы обрабатывать файлы в определенном порядке (простая сортировка по алфавиту будет делать). Есть ли способ добиться этого, т.е. заставить итератор выдавать мне файлы в соответствии с некоторой сортировкой вместо значения по умолчанию?

1 ответ

Решение

Вам нужно отсортировать его самостоятельно, потому что порядок записей в каталоге, получаемый путем разыменования последовательных приращений directory_iterator не указано:

std::vector<boost::filesystem::path> paths(
      boost::filesystem::directory_iterator{"."}
    , boost::filesystem::directory_iterator{}
    );
std::sort(paths.begin(), paths.end());
for(auto const& path : paths)
    std::cout << path << '\n';
Другие вопросы по тегам