新闻中心

C++如何遍历文件夹下的所有文件_C++17 filesystem目录遍历

2025-11-25
浏览次数:
返回列表
c++kquote>C++17起std::filesystem可便捷遍历目录,需包含头文件并启用C++17标准,使用directory_iterator遍历条目,recursive_directory_iterator递归遍历,结合is_regular_file、is_directory和extension可过滤文件类型。

c++如何遍历文件夹下的所有文件_c++17 filesystem目录遍历

从C++17开始,std::filesystem 提供了便捷的方式来遍历文件夹中的所有文件和子目录。这个功能包含在 头文件中,使用前需确保编译器支持 C++17 及以上标准。

启用 filesystem 支持

要使用 filesystem,需要:

  • 包含头文件:#include
  • 使用命名空间:通常使用 namespace fs = std::filesystem;
  • 编译时启用 C++17 并链接必要的库(如 libstdc++fs)

例如,g++ 编译命令:

g++ -std=c++17 your_file.cpp -lstdc++fs

遍历目录中的所有条目

使用 fs::directory_iterator 可以遍历指定目录下的所有条目(包括文件和文件夹):

#include <iostream>
#include <filesystem>

namespace fs = std::filesystem;

int main() {
    std::string path = "./test_folder"; // 替换为你的路径

    for (const auto& entry : fs::directory_iterator(path)) {
        std::cout << entry.path() << std::endl;
    }

    return 0;
}

这段代码会输出目录中每个文件或子目录的完整路径。

区分文件和目录

可以使用 is_regular_file()is_directory() 来判断类型:

美图云修 美图云修

商业级AI影像处理工具

美图云修 50 查看详情 美图云修
for (const auto& entry : fs::directory_iterator(path)) {
    if (entry.is_regular_file()) {
        std::cout << "文件: " << entry.path().filename() << std::endl;
    } else if (entry.is_directory()) {
        std::cout << "目录: " << entry.path().filename() << std::endl;
    }
}

递归遍历所有子目录

使用 fs::recursive_directory_iterator 可以深入遍历所有层级的子目录:

for (const auto& entry : fs::recursive_directory_iterator(path)) {
    std::cout << entry.path() << std::endl;
}

这将列出目录树中所有的文件和子目录,深度优先顺序。

只遍历特定类型的文件(如 .txt)

可以在循环中加入过滤条件:

for (const auto& entry : fs::recursive_directory_iterator(path)) {
    if (entry.is_regular_file() && entry.path().extension() == ".txt") {
        std::cout << "文本文件: " << entry.path() << std::endl;
    }
}

extension() 返回文件扩展名,注意它包含点号(如 ".jpg")。

基本上就这些。C++17 的 filesystem 让目录操作变得直观且跨平台。只要注意编译器支持和链接问题,就能轻松实现文件遍历功能。

以上就是C++如何遍历文件夹下的所有文件_C++17 filesystem目录遍历的详细内容,更多请关注其它相关文章!


# 配置文件  # 软文营销推广广告  # 民权平台网站建设  # seo站前准备  # 万州科技网站优化  # 如何推广一个淘宝客网站  # 南昌网站建设运营  # 声音优化工具网站有哪些  # 宁波全套网站建设  # 营口seo教程如何赚钱  # 实事热点营销公众号推广  # 就能  # 结构化  # 文件遍历  # 如何使用  # 绑定  # 尼克  # 头文件  # 美图  # 递归  # 遍历  # stream  # ios  # ai  # c++ 


相关栏目: 【 科技资讯46185 】 【 网络学院92790


相关推荐: J*a最大堆Heapify方法修复:索引计算与边界条件深度解析  微信网页版官方入口直达 微信网页版网页版登录使用方法  CSS Box Model与弹性按钮:维持布局稳定的动画实践  痛风发作了怎么办? 快速止痛和后期饮食调理  外媒分析《GTA6》定价:卖100美元可以但真没必要!  蓝湖怎样用切图标注提对接效率_蓝湖用切图标注提对接效率【设计对接】  J*a应用程序首次运行自动创建文件与目录的最佳实践  mysql备份恢复性能优化_mysql备份恢复性能优化方法  C++如何进行游戏物理模拟_使用Box2D库为C++游戏添加2D物理效果  在FastAPI中利用lifespan与依赖注入高效管理Redis连接池  包子漫画官方网站阅读入口-包子漫画在线漫画官网直达链接  漫蛙漫画官方首页 漫蛙2漫画在线阅读入口  Surface怎么安装系统 微软Surface Pro U盘重装win11教程  sublime如何配置Python开发环境_将sublime打造成轻量级Python IDE  提升Kafka消费者健壮性:会话超时处理与消息处理语义  12306选座系统怎么选连座_12306选座多人连坐操作方法  Django表单验证失败时保留用户输入数据的最佳实践  深入理解J*aScript中的B样条曲线与节点向量生成  顺丰快件物流信息 官方网站查询入口  Go RPC HTTP服务正确实现与常见陷阱解析  Lar*el 递归关系中排除指定分支的教程  FullCalendar 自定义按钮样式定制指南  谷歌浏览器如何快速清除某个网站的数据_Chrome网站缓存清理方法  Golang如何实现Web文件静态资源服务器_Golang静态资源服务器开发与实践  地铁跑酷免费秒玩入口链接 地铁跑酷小游戏免费秒玩网站  c++中为什么推荐使用using替代typedef_c++现代化类型别名  知乎APP怎么管理已购盐选内容_知乎APP盐选内容购买记录与查看方法  12306选座如何查看座位示意图_12306座位示意图解读与使用  微博网页版首页入口 微博电脑端官网登录链接  12306怎么选座位选到安静区_12306选座安静区域选择策略  C++编译期如何执行复杂计算_C++模板元编程(TMP)技巧与应用  QQ邮箱登录首页官网地址2026 QQ邮箱官方网页入口  Mac终端命令大全_Mac常用Terminal指令速查  Lar*el Form Request中唯一性验证在更新操作中的正确实现  4399网页游戏电脑版全新入口 4399电脑端在线玩指南  qq邮箱日历功能怎么用_创建日程与会议邀请的技巧  优酷会员付费后没到账怎么办_优酷会员充值异常及解决方法  学习通在线学习平台 学习通网页版直接进入课程中心  Android Studio计算器C键逻辑错误排查与修复:条件判断优化指南  蛙漫限时开放最深处链接_蛙漫全站漫画会员同款秒开地址  Steam官网入口直达 Steam注册及登录步骤  Yandex免登录网页版地址 Yandex搜索引擎官方访问入口  百度网盘网页版入口 百度网盘网页版官方登录网址  Angular中单选按钮的正确使用与常见陷阱解析  动漫岛观看全网网 动漫岛在线正版动漫入口  2025俄罗斯Yandex最新入口 官方网站地址及浏览器下载指南  PySpark中从现有列右侧提取可变长度字符创建新列的教程  qq音乐在线播放入口_qq音乐电脑版登录链接  Eclipse怎么运行工程_Eclipse工程运行配置说明  如何提高微信支付的安全性_微信支付安全防护与设置建议 

搜索