使用 boost::filesystem 迭代目录时可以更改文件顺序吗?
Can the order of files be changed when iterating a directory using boost::filesystem?
我继承了一些使用 boost 的代码 directory_iterator
:
for (directory_iterator fileIt{currDir}; fileIt != directory_iterator{}; ++fileIt) {
// Do stuff with files
}
我想按特定顺序处理文件(简单的字母排序即可)。有什么方法可以实现这一点,即强制迭代器根据某种排序而不是默认排序给我文件?
你需要自己排序,因为通过解引用一个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';
我继承了一些使用 boost 的代码 directory_iterator
:
for (directory_iterator fileIt{currDir}; fileIt != directory_iterator{}; ++fileIt) {
// Do stuff with files
}
我想按特定顺序处理文件(简单的字母排序即可)。有什么方法可以实现这一点,即强制迭代器根据某种排序而不是默认排序给我文件?
你需要自己排序,因为通过解引用一个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';