ubuntu c++ 获取文件夹以及子文件夹下所有文件目录

发布时间 2023-05-05 10:56:49作者: 无左无右
#include <dirent.h>
#include <vector>

std::vector<std::string> GetFiles(const std::string& sdir = ".",
                                  bool bsubdir = true) {
    DIR* dp;
    struct dirent* dirp;
    std::vector<std::string> filenames;
    if ((dp = opendir(sdir.c_str())) != NULL) {
        while ((dirp = readdir(dp)) != NULL) {
            if (strcmp(".", dirp->d_name) == 0 || strcmp("..", dirp->d_name) == 0)
                continue;
            if (dirp->d_type != DT_DIR)
                filenames.push_back(sdir + "/" + dirp->d_name);
            if (bsubdir && dirp->d_type == DT_DIR) {
                std::vector<std::string> names = GetFiles(sdir + "/" + dirp->d_name);
                filenames.insert(filenames.begin(), names.begin(), names.end());
            }
        }
    }
    closedir(dp);
    return filenames;
}