我使用了boost::filesystem::directory_iterator
来获取给定文件夹中所有可用文件的列表。
问题是我认为这种方法会按字母顺序给我文件,而结果看起来很随机。
是否有按字母顺序排序的奇特方式?
我目前的代码:
if(boost::filesystem::is_directory(myFolder)){
// Iterate existing files
boost::filesystem::directory_iterator end_iter;
for(boost::filesystem::directory_iterator dir_itr(myFolder);
dir_itr!=end_iter; dir_itr++){
boost::filesystem::path filePath;
// Check if it is a file
if(boost::filesystem::is_regular_file(dir_itr->status())){
std::cout << "Reading file " << dir_itr->path().string() << std::cout;
}
}
}
答案 0 :(得分:15)
我见过的最好的方式就是boost
filesystem教程。在this特定示例中,作者将文件名/目录附加到向量,然后使用std::sort
来确保数据按字母顺序排列。您可以轻松更新代码以使用相同类型的算法。
答案 1 :(得分:1)
直接来自 boost 文件系统教程。
谢谢泰勒的链接。
如果你很懒,这里是改编的代码:
std::vector<std::filesystem::path> files_in_directory;
std::copy(std::filesystem::directory_iterator(myFolder), std::filesystem::directory_iterator(), std::back_inserter(files_in_directory));
std::sort(files_in_directory.begin(), files_in_directory.end());
for (const std::string & filename : files_in_directory) {
std::cout << path.string() << std::endl; // printed in alphabetical order
}