信息发布→ 登录 注册 退出

C++如何遍历目录下的所有文件_C++ filesystem recursive_directory_iterator教程

发布时间:2025-11-28

点击量:
c++kquote>std::filesystem中的recursive_directory_iterator可递归遍历目录,需包含头文件并启用C++17,通过is_regular_file()筛选文件,extension()过滤扩展名,disable_recursion_pending()控制递归深度。

c++如何遍历目录下的所有文件_c++ filesystem recursive_directory_iterator教程

在C++17中,std::filesystem 提供了方便的接口来遍历目录及其子目录中的所有文件。其中 recursive_directory_iterator 是关键工具,可以递归访问目录树中的每一个条目。

包含头文件并启用支持

使用 filesystem 前,需包含头文件并确保编译器支持 C++17 或更高版本。

#include
#include iostream>

编译时要启用 C++17:

g++ -std=c++17 your_file.cpp -o your_program

基本用法:遍历所有文件和子目录

创建一个 recursive_directory_iterator 对象,并用它遍历指定路径下的所有条目。

namespace fs = std::filesystem;

for (const auto& entry : fs::recursive_directory_iterator("your_directory_path")) {
    std::cout }

上面代码会输出目录及其所有子目录中的每个文件和文件夹的完整路径。

N世界 N世界

一分钟搭建会展元宇宙

N世界 138 查看详情 N世界

只列出普通文件(排除目录)

如果只想处理文件,可以使用 is_regular_file() 判断:

for (const auto& entry : fs::recursive_directory_iterator("your_directory_path")) {
    if (entry.is_regular_file()) {
        std::cout     }
}

按扩展名筛选文件

可以通过比较 path().extension() 来过滤特定类型的文件,例如只列出 .txt 文件:

for (const auto& entry : fs::recursive_directory_iterator("your_directory_path")) {
    if (entry.is_regular_file() && entry.path().extension() == ".txt") {
        std::cout     }
}

跳过某些子目录(控制递归深度)

可以调用 disable_recursion_pending() 来阻止进入某个目录:

fs::recursive_directory_iterator it("your_directory_path");
for (auto& entry : it) {
    if (entry.path().filename() == "node_modules") {
        it.disable_recursion_pending(); // 不进入此目录
        continue;
    }
    std::cout }

基本上就这些。std::filesystem 让目录操作变得简单直观,recursive_directory_iterator 特别适合需要深入多层文件夹的场景。注意检查路径是否存在以及是否有访问权限,避免运行时异常。

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


相关文章: 在WordPress中通过REST API获取BasicAuth保护的远程文章  WooCommerce后台产品编辑页:获取分类ID并实现角色权限控制  FullCalendar 自定义按钮样式定制指南  机构:以往存储涨价周期小米利润率实际上有所改善 能转嫁给消费者等  Win10怎么制作U盘启动盘 Win10系统安装U盘制作教程【详解】  CSS Flexbox与媒体查询:实现响应式布局中元素的并排与堆叠  iwriter统一登录平台 iwrite账号密码登录页面  “在文档元素之后找到了标记”是什么错误? 检查并修复XML中多个根元素的3个方法  将PCM16音频数据转换为W*并编码为Base64教程  如何使 Jest 模拟函数默认抛出错误以提高测试效率  Golang如何通过reflect获取匿名字段方法_Golang reflect匿名字段方法访问技巧  一加手机拍照效果不好怎么办 一加哈苏影像调校与专业模式使用教程【高手篇】  Composer如何在生产环境安全地执行composer update  如何在低配置电脑上搭建轻量级J*a环境_占用更小的环境选择技巧  Go语言中构建可靠数据存储的原子性与持久化策略  CSS布局:解决全屏元素100%尺寸与外边距导致的页面溢出问题  Golang如何实现Web文件静态资源服务器_Golang静态资源服务器开发与实践  python3时间如何用calendar输出?  Python实时数据流中的动态最值查找策略  三星GalaxyZFold5怎样在相册制作折叠屏分镜_iPhone三星GalaxyZFold5相册制作折叠屏分镜【创意编辑】  将JSON对象数组转置为键值对列表的实用指南  zookeeper 都有哪些功能?  漫蛙2网页版漫画入口 漫蛙漫画在线官方登录  解决macOS上安装pyhdf时‘hdf.h’文件缺失的编译错误  PHP表单提交后函数重复执行的解决方案:管理$_POST数据  Golang如何使用const iota_Go iota常量计数器讲解  AO3中文官网链接_AO3网页版稳定镜像站  NVIDIA股价11月重挫12%:下月有望好转 但难回5万亿美元巅峰  电脑屏幕颜色不舒服怎么办_Windows夜间模式与色彩校准教程【护眼技巧】  J*aScript中向JSON对象添加新属性的正确姿势  响应式图片在网页设计中的正确实现方法  如何在更新Composer依赖后自动运行测试_使用post-update-cmd钩子触发PHPUnit  必由学官网入口 必由学教师登录入口  小红书网页版入口链接分享 小红书官网直接进  J*aScript中如何高效提取对象指定属性  QQ邮箱网页版快速登录 QQ邮箱邮箱账号官方入口地址  在J*a中如何使用Stream.map转换元素_Stream映射操作解析  J*a递归快速排序中静态变量的状态管理与陷阱  大象笔记网页版入口 印象笔记网页版登录入口  漫蛙2(台版)官方入口地址 漫蛙2(台版)正版漫画网页端  Windows7怎么硬盘安装 Windows7提取ISO镜像到非系统盘并运行setup.exe实现硬盘直装【教程】  Golang如何实现状态模式管理对象状态_Golang State模式实现技巧  谷歌浏览器一键优化方案_谷歌浏览器直达主页极速不卡版  4399免费游戏网址入口 4399小游戏免费入口点开即玩  必由学在线入口 必由学网页版快速登录入口  抖音从哪里进入网页版_抖音官方入口链接  德邦快递查询平台 德邦快递物流信息查询入口  怎样把文件彻底粉碎无法恢复_Windows下安全删除敏感数据【隐私保护】  蛙漫移动版在线看 蛙漫手机浏览器直达入口  海棠电脑版入口_通过电脑访问海棠官网阅读 

在线客服
服务热线

服务热线

4008988990

微信咨询
二维码
返回顶部
×二维码

截屏,微信识别二维码

打开微信

微信号已复制,请打开微信添加咨询详情!