获取文件夹

时间:2015-06-22 14:54:05

标签: c++ boost boost-filesystem

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

2 个答案:

答案 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
}