c++读取某个文件夹下全部某种类型的文件
2014-12-21 00:22
295 查看
本文代码实现的功能为:
读取images 文件夹下全部格式为.jpg格式的图片名称,并将名称显示出来。
以下为代码
getFileContents.h
getFileContents.cpp
main.cpp
Reference:
1:http://www.verydemo.com/demo_c128_i5413.html
2:/article/2019286.html
3:http://blog.163.com/yuxiangdingdang@126/blog/static/10879785201032222340507/
读取images 文件夹下全部格式为.jpg格式的图片名称,并将名称显示出来。
以下为代码
getFileContents.h
#ifndef GETFILECONTENTS_H #define GETFILECONTENTS_H #include<string> #include<vector> using namespace std; typedef vector<string> filelists; filelists getImagePathes(const char* path,const char* extension); #endif
getFileContents.cpp
#include "getFileContents.h" #include<Windows.h> using namespace std; #define LEN 1024 wstring s2ws(const std::string& s) { int len; int slength = (int)s.length() + 1; len = MultiByteToWideChar(CP_ACP, 0, s.c_str(), slength, 0, 0); wchar_t* buf = new wchar_t[len]; MultiByteToWideChar(CP_ACP, 0, s.c_str(), slength, buf, len); std::wstring r(buf); delete[] buf; return r.c_str(); } // wchar_t to string void Wchar_tToString(std::string& szDst, wchar_t *wchar) { wchar_t * wText = wchar; DWORD dwNum = WideCharToMultiByte(CP_OEMCP,NULL,wText,-1,NULL,0,NULL,FALSE);// WideCharToMultiByte的运用 char *psText; // psText为char*的临时数组,作为赋值给std::string的中间变量 psText = new char[dwNum]; WideCharToMultiByte (CP_OEMCP,NULL,wText,-1,psText,dwNum,NULL,FALSE);// WideCharToMultiByte的再次运用 szDst = psText;// std::string赋值 delete []psText;// psText的清除 } filelists getImagePathes(const char* path,const char* extension) { int n=0; WIN32_FIND_DATA findFileData; HANDLE handle; string searchPath,searchFile; filelists allFiles; searchPath=string(path)+"/*"+string(extension); #ifdef UNICODE wstring stemp=s2ws(searchPath); LPCWSTR filePath=stemp.c_str(); #else LPCWSTR filePath=searchPath.c_str(); #endif handle=FindFirstFile(filePath ,&findFileData); if(handle==INVALID_HANDLE_VALUE) { fprintf(stderr,"ERROR(%s,%d): Cannot find (*.%s)files in directory %s\n", __FILE__, __LINE__, extension, path); exit(0); } do { if(findFileData.cFileName[0]=='.') { continue; } if(findFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) { continue; } else { string temp; Wchar_tToString(temp,findFileData.cFileName); searchFile=string(path)+"/"+temp; allFiles.push_back(searchFile); n++; } }while(FindNextFile(handle,&findFileData)); FindClose(handle); return allFiles; }
main.cpp
#include<iostream> #include<string> #include<vector> #include"getFileContents.h" #include<opencv2/core/core.hpp> #include<opencv2/highgui/highgui.hpp> using namespace cv; using namespace std; //typedef vector<string> filelists; int main() { filelists imageNames=getImagePathes("../../images",".jpg"); for(int i=0;i<imageNames.size();i++) { cout<<imageNames[i]<<endl; } return 0; }运行结果如下图:
Reference:
1:http://www.verydemo.com/demo_c128_i5413.html
2:/article/2019286.html
3:http://blog.163.com/yuxiangdingdang@126/blog/static/10879785201032222340507/
相关文章推荐
- C++读取当前文件夹下所有某种类型文件
- c++读取某文件夹下的所有文件并查找.txt类型文件名
- 遍历读取指定文件夹下指定类型的所有文件
- c++某种文件格式的读取与写入范例[stl]
- 读取文件夹下指定类型的文件(windows)
- C++遍历读取文件夹(仅限当前目录而不深入)下的文件
- 读取文件夹下指定类型的文件(windows)
- C#读取文件夹下面的全部文件的实现
- C++依次读取文件中的汉字并将汉字转为string类型
- 读取指定文件夹下的全部文件,可通过正则进行过滤,返回文件路径数组 -- 基于node的一个函数
- 常用公共函数库(验证mac地址、判断ip所属网段、创建文件夹、读取文件、获取移动客户端类型等)
- c++ 遍历文件夹下各种类型文件
- Java读取文件夹下的指定类型的文件 递归筛选 包含子文件夹
- JAVA读取一个文件夹下所有某类型文件
- 从文件夹中读取子文件夹内带有指定后缀如.bmp文件的C++实现,并读取子文件夹后缀数字
- C++ 标准文件流以 StringToken 为单位读取文件并全部刷新重写
- c++某种文件格式的读取与写入范例[stl]
- Java读取文件夹下的指定类型的文件(包含子文件夹)
- 遍历读取指定文件夹下指定类型的所有文件
- C++读取文件夹中所有的文件或者是特定后缀的文件