ZBLOG

#include #include namespace fs = std::filesystem; void traverseDirectory(const std::string& directoryPath, std::vector& datapath) { for (const auto& entry : fs::directory_iterator(directoryPath)) { ...

这段代码是一个递归遍历目录的函数。它使用了std::filesystem库来操作文件系统。

函数traverseDirectory接受一个目录路径和一个空的字符串向量作为参数,用于存储遍历到的文件路径。

在函数内部,通过fs::directory_iterator(directoryPath)创建一个目录迭代器,并使用范围循环遍历每个目录条目。

如果当前条目是一个子目录(使用fs::is_directory(entry)判断),则对该子目录进行递归调用,以继续遍历其下层子目录。

如果当前条目是一个普通文件(使用fs::is_regular_file(entry)判断),则将其路径转换为字符串,并添加到datapath向量中。

这样,经过递归遍历后,你可以获取到给定目录下所有文件的路径。

例如:

#include <iostream>
#include <filesystem>
#include <vector>

namespace fs = std::filesystem;

void traverseDirectory(const std::string& directoryPath, std::vector<std::string>& datapath)
{
    for (const auto& entry : fs::directory_iterator(directoryPath))
    {
        if (fs::is_directory(entry))
        {
            // 递归遍历子目录
            traverseDirectory(entry.path().string(), datapath);
        }
        else if (fs::is_regular_file(entry))
        {
            std::string filePath = entry.path().string();
            datapath.emplace_back(filePath);
        }
    }
}

int main()
{
    std::vector<std::string> filepaths;
    
    traverseDirectory("path/to/directory", filepaths);
    
    for (const auto& filepath : filepaths)
    {
        std::cout << filepath << std::endl;
    }
    
    return 0;
}

你可以将实际的目录路径替换为”path/to/directory”,然后运行代码以遍历该目录下的所有文件,并打印出每个文件的路径。


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://sdn.0voice.com/?id=3831

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?