編程時經常需要找到當前目錄下的文件夾名字,以備循環調用,其中allName即爲子文件夾的名字。如需要超找所有文件,只需將getFiles中的註解去掉即可,if(fileinfo.name[num-1]!='t')表示去掉txt文件。
string basePath="E:\\project\\trackProject\\weight\\RGBT_dataset\\";
vector<string>file_name;
getFiles(basePath.c_str(),file_name);
int file_num=file_name.size();
for (int i=2;i<file_num;i++)
{
string allName=file_name[i].substr(file_name[i].find_last_of("\\")+1,file_name[i].length());
}
void getFiles( string path, vector<string>& files )
{
//文件句柄
long hFile = 0;
//文件信息
struct _finddata_t fileinfo;
string p;
if((hFile = _findfirst(p.assign(path).append("\\*").c_str(),&fileinfo)) != -1)
{
do
{
// //如果是目錄,迭代之
// //如果不是,加入列表
// if((fileinfo.attrib & _A_SUBDIR))
// {
// if(strcmp(fileinfo.name,".") != 0 && strcmp(fileinfo.name,"..") != 0)
// getFiles( p.assign(path).append("\\").append(fileinfo.name), files );
// }
// else
// {
// int num=strlen(fileinfo.name);
//exclude the .txt file
// if(fileinfo.name[num-1]!='t')
files.push_back(p.assign(path).append("\\").append(fileinfo.name) );
//}
}while(_findnext(hFile, &fileinfo) == 0);
_findclose(hFile);
}
}