读取文件夹下所有的文件

  1. #include <iostream>  
  2. #include <string>  
  3. #include <vector>  
  4. #include <io.h>  
  5. #include <string.h>  
  6.   
  7. using namespace std;  
  8.   
  9. void getFiles(string foler, vector<string>& files);  
  10.   
  11. int main() {  
  12.     string folder = "E:/MATLAB/LBP/scene_categories/MITcoast";  //此处用的是斜杠,也可以用反斜  
  13.     //但需注意的是由于C语言的特点,要用双反斜杠,即"E:\\MATLAB\\LBP\\scene_categories"  
  14.     //cin >> folder;   //也可以用此段代码直接在DOS窗口输入地址,此时只需正常的单反斜杠即可  
  15.   
  16.     vector<string> files;  
  17.     getFiles(folder, files );  //files为返回的文件名构成的字符串向量组  
  18.   
  19.     forint i = 0; i < files.size(); i++ ) {    //files.size()返回文件数量  
  20.   
  21.         //To do here  
  22.         cout << files[i] << endl;  
  23.     }  
  24.     system("pause");  
  25.     return 0;  
  26. }  
  27.   
  28. void getFiles( string path, vector<string>& files ) {  
  29.     //文件句柄  
  30.     long hFile   =   0;  
  31.     //文件信息  
  32.     struct _finddata_t fileinfo;   //大家可以去查看一下_finddata结构组成                            
  33.     //以及_findfirst和_findnext的用法,了解后妈妈就再也不用担心我以后不会编了  
  34.     string p;  
  35.     if((hFile = _findfirst(p.assign(path).append("\\*").c_str(),&fileinfo)) != -1) {  
  36.         do {     
  37.             //如果是目录,迭代之  
  38.             //如果不是,加入列表  
  39.             if((fileinfo.attrib & _A_SUBDIR)) {  
  40.                 if(strcmp(fileinfo.name,".") != 0 && strcmp(fileinfo.name,"..") != 0)  
  41.                     getFiles( p.assign(path).append("\\").append(fileinfo.name), files );  
  42.             }   
  43.             else {  
  44.                 files.push_back(p.assign(path).append("\\").append(fileinfo.name) );  
  45.             }  
  46.         }   
  47.         while(_findnext(hFile, &fileinfo) == 0);_findclose(hFile);  
  48.     }  
  49. }  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值