C++遍历文件夹下的子目录和文件

news/2024/11/30 0:50:54/
#include <io.h>
#include <stdio.h>void getFiles(string path, vector<string>& files, string postfix)
{//文件句柄    long   hFile = 0;//文件信息    struct _finddata_t fileinfo;string p;if ((hFile = _findfirst(p.assign(path).c_str(), &fileinfo)) != -1){do{//如果是目录,迭代之    //如果不是,加入列表    if ((fileinfo.attrib &  _A_SUBDIR)){if (strcmp(fileinfo.name, ".") != 0 && strcmp(fileinfo.name, "..") != 0)getFiles(p.assign(path).append("\\*"), files, postfix);}else{if (postfix.size() == 0 || (postfix.size() > 0 && (postfix.c_str(), strchr(fileinfo.name, '.'))))files.push_back(p.assign(fileinfo.name));}} while (_findnext(hFile, &fileinfo) == 0);_findclose(hFile);}
}void main()
{vector<string> files;getFiles("testvideo", files, ".jpg|.avi");
}

网上的代码明显有问题,在递归的时候用"path\\path"进行递归搜索,显然第一次递归就失败啊,有可能是最早放出代码的小伙伴故意的,结果很多人也不试,拿来就用。

递归的时候用"path\\*"可以检索出path下的第一个默认文件,一般是".",就是当前目录,第二个是"..",上一级目录,在循环中判断时可以过滤掉的,而其他的子目录和文件也可以被递归获取到完整的名称。加上文件后缀可以对想搜索的文件进行过滤。


http://www.ppmy.cn/news/842194.html

相关文章

linux 目录路径 . .. / ~

根目录 &#xff1a;/ home目录&#xff1a;~ 当前目录&#xff1a;./ 父级&#xff08;上一级&#xff09;目录&#xff1a;../ 上两级目录&#xff1a;../.. 在linux中&#xff0c;任何目录下都隐藏着“.”和“..”文件&#xff0c;同时如果文件名或目录前面带有点号“.”&…

Linux目录和路径

1.相对路径和绝对路径 以“/”开始的是绝对路径如图&#xff1a; 以“./”开头是相对路径相对于当前路径。 2.对目录的一些操作。 命令&#xff1a;cd &#xff08;change directory&#xff09;切换目录。 命令&#xff1a;pwd&#xff08;print working directory&#xff…

vue使用@根目录路径引入

第一步&#xff1a;安装一下path npm install path --save第二步&#xff1a;在vue.config.js文件中配置一下 const path require(path)function resolve(dir) {return path.join(__dirname, dir) } module.exports {chainWebpack: config > {config.resolve.alias.set(…

Redis实战案例16-redisson的快速入门

1. 可能存在的问题 不可重入&#xff1a;基于SETNX实现的简单分布式锁通常不支持可重入性&#xff0c;即同一个客户端在获取锁后不能再次获取锁&#xff0c;否则会导致死锁。不可重试&#xff1a;如果多个客户端同时尝试获取锁但都失败了&#xff0c;并且没有重试机制&#xff…

OnlyHome三代金属智能手环|健康、科技齐实现

近年来,人们越来越追求生活的品质与趣味,生活中的一点点小确幸、小惊喜最能让人感受到深深地愉悦。这不,Only&Home三代金属智能手环也带来了惊喜,有了它,健康、科技两手抓,享受生活更自由。 Only&Home三代金属智能手环给人的第一印象是它超高的颜值,延用了二代手环奢华…

word中行与行间距大

word中设置了行间距&#xff0c;但还是显示距离过大。 如下图&#xff0c;删除段前间距和段后间距

office word 格式刷刷过,但是段落间距不相同的解决方案

问题&#xff1a;如图&#xff0c; 想把右面的文档改成和左面一样的格式&#xff0c;用格式刷刷过以后&#xff0c;段落间距却不一样&#xff0c;段落设置、行距啥的都一模一样 解决方案&#xff1a;是因为文档里定义的网格不同&#xff0c;把段落设置中的“如果定义了网格&am…

word文档中英文行间距不一样怎么解决

方法/步骤1: 在编辑文档时发现在有英文的段落中&#xff0c;行间距与没有要英文的不同&#xff0c;如图&#xff1a; 方法/步骤2: 该如何解决呢&#xff1f;首先鼠标选中有英文的段落&#xff0c;或者CTRLA全选&#xff1a; 方法/步骤3: 然后选中功能选项卡的开始选项卡&…