获取文件夹中文件的有序列表
Get an ordered list of files in a folder
我已使用 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;
}
}
}
我见过的执行你想要的最奇特的方法是直接来自 boost
filesystem tutorial. In this 特定示例,作者将 filename/directory 附加到矢量然后利用std::sort
以确保数据按字母顺序排列。您的代码可以很容易地更新为使用这种相同类型的算法。
straight from the boost filesystem tutorial.
感谢泰勒 link。
如果你比较懒,这里是改编代码:
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
}
我已使用 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;
}
}
}
我见过的执行你想要的最奇特的方法是直接来自 boost
filesystem tutorial. In this 特定示例,作者将 filename/directory 附加到矢量然后利用std::sort
以确保数据按字母顺序排列。您的代码可以很容易地更新为使用这种相同类型的算法。
straight from the boost filesystem tutorial.
感谢泰勒 link。
如果你比较懒,这里是改编代码:
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
}