使用boost :: filesystem迭代目录时可以更改文件的顺序吗?

时间:2018-02-14 10:10:19

标签: c++ file iterator boost-filesystem

我使用boost directory_iterator继承了一些代码:

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

我希望按特定顺序处理文件(简单的字母排序可以)。有没有办法实现这一点,即强制迭代器根据一些排序而不是默认值给我文件?

1 个答案:

答案 0 :(得分:3)

您需要自己排序,因为通过解除引用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';