文档章节

c++遍历目录文件

0-1
 0-1
发布于 2014/09/01 11:41
字数 168
阅读 17
收藏 0
#include <iostream>
#include <string>
#include <cstring>
#include <vector>
#include <io.h>
#include <windows.h>
using namespace std;
 
void getFileList(const string& sPath,vector<string>& fileList);
 
void getFile(const string& sPath,vector<string>& fileList,_finddata_t& file)
{
    if(file.attrib == _A_SUBDIR)
    {
        string filename = file.name;
        if(filename == "." || filename == "..")
        {
            return ;
        }
        string sAddPath = sPath;
        sAddPath += filename;
        sAddPath += "\\";
        getFileList(sAddPath,fileList);
    }
    else
    {
        string sAddPath = sPath;
        sAddPath += file.name;
        fileList.push_back(sAddPath);
    }
}
 
void getFileList(const string &sPath,vector<string>& fileList)
{  
    struct _finddata_t file;
	string sPathLast, sPath2 = sPath;
    long hFile;

	if ( sPath[sPath.length()-1] != '\\' )
		sPath2 += "\\";

	sPathLast = sPath2 + "*";
    hFile = _findfirst(sPathLast.c_str(), &file);
    if(hFile == -1)
        return;
    else
        getFile(sPath2,fileList,file);
 
    while(_findnext(hFile, &file) != -1)
    {
        getFile(sPath2,fileList,file);
    }
 }
 
int main(int argc,char** argv)
{
		string fileDir("E:");
		vector<string> rfileList;

		getFileList(fileDir,rfileList);
 		for(size_t i=0;i<rfileList.size();i++)
        {
            cout<<rfileList[i]<<endl;
        }

		system("pause");
		return 0;
}


发现一个问题, 对中文目录不支持。。。待优化



© 著作权归作者所有

0-1

0-1

粉丝 92
博文 268
码字总数 145989
作品 0
福州
程序员
私信 提问
用NAN写一个nodejs的c++扩展

NAN介绍 NAN的全称为Native Abstraction for Node.js, 其表现上是一个Node.js包。安装后,就得到一堆C++头文件,里面是一堆宏。它主要为Node.js和V8跨版本提供了封装的宏,使得开发者不用关心...

warjiang
01/06
0
0
TinyXML:一个优秀的C++ XML解析器

读取和设置xml配置文件是最常用的操作,试用了几个C++的XML解析器,个人感觉TinyXML是使用起来最舒服的,因为它的API接口和Java的十分类似,面向对象性很好。 TinyXML是一个开源的解析XML的解...

zmldndx
2013/10/10
0
0
C++ STL 遍历 map 的时候如何删除其中的 element

我们通过map的erase(iterator it)方法删除元素的时候,如果此时erase处于遍历map的代码中,那么调用erase就需要小心一些。因为erase会导致输入参数iterator变的无效,从而影响后续的it++遍历...

鉴客
2011/10/13
7.1K
2
Effective STL - 容器

STL(standard template library)提供了一组表示容器,迭代器,函数对象和算法的模板。容器是一个与数组类似的单元,可以存若干个值。 STL容器是同质的,即存储的值的类型相同;算法是完成特...

積木leayn
2013/10/07
0
0
LLVM/Clang 在Windows上的设置

由于Clang源代码的缘故,Clang在编译C++程序的时候 ,后端是MinGW,无法正常的寻找到C++ libc++ Include目录 Clang查找libc++目录 由Clang源代码 lib\Frontend\InitHeaderSearch.cpp 文件实现...

Force武装卫队
2012/12/17
12.1K
0

没有更多内容

加载失败,请刷新页面

加载更多

centos7 新手阿里云服务器安装mongodb

简介 MongoDB 是一个基于分布式 文件存储的NoSQL数据库 由C++语言编写,运行稳定,性能高 旨在为 WEB 应用提供可扩展的高性能数据存储解决方案 MongoDB特点 模式自由 :可以把不同结构的文档存...

醉雨
26分钟前
1
0
sql注入漏洞,应屏蔽SQL注入攻击

注:SQL注入好比是前端URL传参数请求时参数以SQL 做为参数传入,如 select 1 from dual where 1=1 or 1=1 and 1=2;(类似这样的SQL语句) 防御方法 如果自己编写防注代码,一般是先定义一个函...

颜丽
26分钟前
2
0
装饰者模式

 代理模式与装饰者模式看起来很像,都实现基础对象实现的接口,在其自身对象中都保存着对被代理/被装饰者的对象引用。   先来看看装饰者模式的定义:动态的将责任附加到被装饰者对象上,用...

铁骨铮铮
30分钟前
0
0
我为什么飞行 10000 公里去西班牙参加 KubeCon?

2019 年 5 月 20 日至 23 日, 由 Cloud Native Computing Foundation (CNCF) 主办的云原生技术大会 KubeCon + CloudNativeCon EU(欧洲场)即将在热情洋溢的巴塞罗那盛装启幕。 作为云计算领...

zhaowei121
48分钟前
1
0
Node.getTextContent() not found 解决办法【不需要调整builder path下面包顺序】

新导入的工程,w3c的getTextContent找不到,response的setCharacterEncoding找不到,网上很多教程都是“调整工程builder path的lib包顺序把jre、tomcat调到上面即可”,但是进入项目的build...

嘿嘿嘿IT
55分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部