Можно ли изменить порядок файлов при итерации каталога с использованием 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';