原文作者:aircraft
原文链接:https://www.cnblogs.com/DOMLX/p/9622851.html
删除文件目录函数:
void myDeleteDirectory(CString directory_path)
{
CFileFind finder;
CString path;
path.Format(_T("%s/*.*"), directory_path);
BOOL bWorking = finder.FindFile(path); while (bWorking)
{
bWorking = finder.FindNextFile(); if (finder.IsDirectory() && !finder.IsDots())//处理文件夹 {
myDeleteDirectory(finder.GetFilePath()); //递归删除文件夹 RemoveDirectory(finder.GetFilePath());
} else//处理文件 {
DeleteFile(finder.GetFilePath());
}
}
RemoveDirectory(directory_path);
}
创建文件目录函数:
int my_mkdir(const string &s)
{ const char *fileName = s.data(), *tag; for (tag = fileName; *tag; tag++)
{ if (*tag == '\\')
{ char buf[1000], path[1000];
strcpy(buf, fileName);
buf[strlen(fileName) - strlen(tag) + 1] = NULL;
strcpy(path, buf); if (access(path, 6) == -1)
{
mkdir(path); //创建成功返回0 不成功返回-1 }
}
}
}
分割目录字符串,比如只取文件名字不要文件格式(也是取得.之前的字符串或者.之后的字符串),当然也可以分割其他字符,看你传入的操作字符是 . 还是 / 之类咯:
vector split(const string &s, const string &seperator){
vector result;
typedef string::size_type string_size;
string_size i = 0; while (i != s.size()){ //找到字符串中首个不等于分隔符的字母;
int flag = 0; while (i != s.size() && flag == 0){
flag = 1; for (string_size x = 0; x
flag = 0; break;
}
} //找到又一个分隔符,将两个分隔符之间的字符串取出;
flag = 0;
string_size j = i; while (j != s.size() && flag == 0){ for (string_size x = 0; x
flag = 1; break;
} if (flag == 0) ++j;
} if (i != j){
result.push_back(s.substr(i, j - i));
i = j;
}
} return result;
}
将某个字符串中的某些字符替换函数:
string& replace_all(string& str, const string& old_value, const string& new_value)
{ while (true) { string::size_type pos(0); if ((pos = str.find(old_value)) != string::npos)
str.replace(pos, old_value.length(), new_value); else break;
} return str;
}
c++遍历文件目录获取文件名字:
//获取特定格式的文件名void getAllFiles(string path, vector& files, string format)
{
intptr_t hFile = 0;//文件句柄 64位下long 改为 intptr_t
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);
}
}
调用方法:
std::string m_filePath = "模板\\";
std::vector<:string> m_files;
std::string m_format = ""; //查找文件的格式 getAllFiles(m_filePath, m_files, m_format); int size = m_files.size(); int c_size; for (int i = 0; i
{
m_file[i];
}
以后用到其他c++的文件处理函数在补上去吧,反正来日FQ。嘿嘿。。。