c++ 获取文件夹中文件的有序列表

aydmsdu9  于 2023-03-05  发布在  其他
关注(0)|答案(2)|浏览(173)

我使用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;
        }
    }
}
alen0pnh

alen0pnh1#

我所见过的最好的方法是直接从boostfilesystem教程中找到的。在this的特定例子中,作者将文件名/目录附加到向量上,然后使用std::sort来确保数据是按字母顺序排列的。您的代码可以很容易地更新为使用这种类型的算法。

lkaoscv7

lkaoscv72#

直接来自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 << filename << std::endl; // printed in alphabetical order
}

相关问题