如何快速学习:[1]Swift编程语言,Swift,苹果于2014年WWDC(苹果开发者大会)发布的新开发语言,可与Ojective-C*共同运行于MacOS和iOS平台,用于搭建基于苹果平台的应用程......
2023-03-17 350 编程语言
c 文件遍历控制台程序
编译预处理:
#includeiostream>
#includestring>
#includeio.h>
#includestdio.h>
#includestdlib.h>
遍历文件通常先寻找第一个文件是否存在
hfile = _findfirst(s.assign(path).append("/*").c_str(), &filefind)) != -1
hfile为文件句柄
为intptr_t类型
intptr_t hfile =0;
判断得到的文件名是文件还是文件夹
filefind.attrib == _A_SUBDIR
如果是文件夹则再次调用遍历函数,使用递归。
如果是文件则记录文件路径
if (filefind.attrib == _A_SUBDIR) {
if(strcmp(filefind.name,".")&&strcmp(filefind.name,".."))
{
findfile(s.assign(path).append("/").append(filefind.name), files);}
}else {
files.push_back(s.assign(path).append("/").append(filefind.name));//
std::cout filefind.name std::endl;}
最后关闭句柄
_findclose(hfile);
完整代码:
#includeiostream>
#includestring>
#includeio.h>
#includestdio.h>
#includestdlib.h>
void findfile(std::string path,std::vectorstd::string> &files) {
struct _finddata_t filefind;
intptr_t hfile =0;
std::string s;
if ((hfile = _findfirst(s.assign(path).append("/*").c_str(), &filefind)) != -1) {
do{
if (filefind.attrib == _A_SUBDIR) {
if(strcmp(filefind.name,".")&&strcmp(filefind.name,"..")){
findfile(s.assign(path).append("/").append(filefind.name), files);}}
else {
files.push_back(s.assign(path).append("/").append(filefind.name));
std::cout filefind.name std::endl;}
} while (_findnext(hfile, &filefind) == 0);
}_findclose(hfile);}
int main(){
std::string path = "D:/test"; //要遍历的文件夹
std::vectorstd::string> files;//通过容器存储
int i=0;
findfile(path, files);
for (int i = 0;i files.size();i ) {
std::coutas[i]std::endl;//输出遍历得到的文件夹}
system("pause");
return 0;
}
以上方法由办公区教程网编辑摘抄自百度经验可供大家参考!
标签: 编程语言
相关文章
如何快速学习:[1]Swift编程语言,Swift,苹果于2014年WWDC(苹果开发者大会)发布的新开发语言,可与Ojective-C*共同运行于MacOS和iOS平台,用于搭建基于苹果平台的应用程......
2023-03-17 350 编程语言
web图表开发工具FineReport:[11]连续分组,数据库表数据是按照时间先后录入的,查询的时候希望按照时间先后,某个字段连续相同的话就合并起来显示,这样的报表可以通过相邻连续分组来实现。......
2023-03-17 574 编程语言