文件遍历(只适用windows)

#include 
void getAllFiles(string path, vector<string>& files, string format)
{
     
 intptr_t  hFile = 0;//文件句柄  
 struct _finddata_t fileinfo;//文件信息  
 string p;
 if ((hFile = _findfirst(p.assign(path).append("\\*" + format).c_str(), &fileinfo)) != -1) //文件存在 
 {
     
  do
  {
     
   if ((fileinfo.attrib & _A_SUBDIR))//判断是否为文件夹   
   {
     
    if (strcmp(fileinfo.name, ".") != 0 && strcmp(fileinfo.name, "..") != 0)//文件夹名中不含"."和".."    
    {
     
     files.push_back(p.assign(path).append("\\").append(fileinfo.name)); //保存文件夹名     
     getAllFiles(p.assign(path).append("\\").append(fileinfo.name), files, format); //递归遍历文件夹    
    }
   }
   else
   {
     
    files.push_back(p.assign(path).append("\\").append(fileinfo.name));//如果不是文件夹,储存文件名   
   }
  } while (_findnext(hFile, &fileinfo) == 0);
  _findclose(hFile);
 }
}
int main()
{
     
 string filePath = "C:\\Users\\admin\\Desktop\\广州";
 vector<string> files;
 string format = ".bmp";     //查找文件的格式 
 getAllFiles(filePath, files, format);
 int size = files.size();
 }

你可能感兴趣的:(C++)