c++ 常用的遍历,删除,分割等等文件处理函数代码实现
原文作者: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[], path[];
strcpy(buf, fileName);
buf[strlen(fileName) - strlen(tag) + ] = NULL;
strcpy(path, buf);
if (access(path, ) == -)
{
mkdir(path); //创建成功返回0 不成功返回-1
}
}
}
}
分割目录字符串,比如只取文件名字不要文件格式(也是取得.之前的字符串或者.之后的字符串),当然也可以分割其他字符,看你传入的操作字符是 . 还是 / 之类咯:
vector<string> split(const string &s, const string &seperator){
    vector<string> result;
    typedef string::size_type string_size;
    string_size i = ;
    while (i != s.size()){
        //找到字符串中首个不等于分隔符的字母;
        int flag = ;
        while (i != s.size() && flag == ){
            flag = ;
            for (string_size x = ; x < seperator.size(); ++x)
                if (s[i] == seperator[x]){
                    ++i;
                    flag = ;
                    break;
                }
        }
        //找到又一个分隔符,将两个分隔符之间的字符串取出;
        flag = ;
        string_size j = i;
        while (j != s.size() && flag == ){
            for (string_size x = ; x < seperator.size(); ++x)
                if (s[j] == seperator[x]){
                    flag = ;
                    break;
                }
            if (flag == )
                ++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();
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<string>& files, string format)
{
intptr_t hFile = ;//文件句柄 64位下long 改为 intptr_t
struct _finddata_t fileinfo;//文件信息
string p;
if ((hFile = _findfirst(p.assign(path).append("\\*" + format).c_str(), &fileinfo)) != -) //文件存在
{
do
{
if ((fileinfo.attrib & _A_SUBDIR))//判断是否为文件夹
{
if (strcmp(fileinfo.name, ".") != && strcmp(fileinfo.name, "..") != )//文件夹名中不含"."和".."
{
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) == );
_findclose(hFile);
}
}
调用方法:
std::string m_filePath = "模板\\";
std::vector<std::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 = ; i < size; i++)
{
m_file[i];
}
以后用到其他c++的文件处理函数在补上去吧,反正来日翻墙。嘿嘿。。。
若有兴趣交流分享技术,可关注本人公众号,里面会不定期的分享各种编程教程,和共享源码,诸如研究分享关于c/c++,python,前端,后端,opencv,halcon,opengl,机器学习深度学习之类有关于基础编程,图像处理和机器视觉开发的知识

c++ 常用的遍历,删除,分割等等文件处理函数代码实现的更多相关文章
- 文件操作(FILE)与常用文件操作函数
		
文件 1.文件基本概念 C程序把文件分为ASCII文件和二进制文件,ASCII文件又称文本文件,二进制文件和文本文件(也称ASCII码文件)二进制文件中,数值型数据是以二进制形式存储的, 而在文本文件 ...
 - Linux和Windows的遍历目录下所有文件的方法对比
		
首先两者读取所有文件的方法都是采用迭代的方式,首先用函数A的返回值判断目录下是否有文件,然后返回值合法则在循环中用函数B直到函数B的返回值不合法为止.最后用函数C释放资源. 1.打开目录 #inclu ...
 - Ubuntu系统下常用的新建、删除、拷贝文件命令
		
我们在Ubuntu系统中安装程序时,经常要在usr目录下新建.拷贝文件,此文件夹在Linux类系统中需要root权限才能访问,因此用常规的鼠标右键菜单操作是无效的,今天分享一下在终端中使用命令新建.拷 ...
 - [转]Ubuntu系统下常用的新建、删除、拷贝文件命令
		
我们在Ubuntu系统中安装程序时,经常要在usr目录下新建.拷贝文件,此文件夹在Linux类系统中需要root权限才能访问,因此用常规的鼠标右键菜单操作是无效的,今天分享一下在终端中使用命令新建.拷 ...
 - git 常用命令(含删除文件)
		
git 常用命令(含删除文件) Git常用操作命令收集: 1) 远程仓库相关命令 检出仓库:$ git clone git://github.com/jquery/jquery.git 查看远程仓库: ...
 - Java精选笔记_IO流【File(文件)类、遍历目录下的文件、删除文件及目录】
		
File(文件)类 File类用于封装一个路径,该路径可以是从系统盘符开始的绝对路径,也可以是相对于当前目录而言的相对路径 File类内部封装的路径可以指向一个文件,也可以指向一个目录,在使用File ...
 - C# 文件操作(全部) 追加、拷贝、删除、移动文件、创建目录 修改文件名、文件夹名
		
原文:C# 文件操作(全部) 追加.拷贝.删除.移动文件.创建目录 修改文件名.文件夹名 本文也收集了目前最为常用的C#经典操作文件的方法,具体内容如下:C#追加.拷贝.删除.移动文件.创建目录.递归 ...
 - C# 文件操作 全收录 追加、拷贝、删除、移动文件、创建目录、递归删除文件夹及文件....
		
本文收集了目前最为常用的C#经典操作文件的方法,具体内容如下:C#追加.拷贝.删除.移动文件.创建目录.递归删除文件夹及文件.指定文件夹下 面的所有内容copy到目标文件夹下面.指定文件夹下面的所有内 ...
 - Linux 系统常用命令汇总(一) 文件和目录操作
		
文件和目录 命令 选项 注解 示例 文件的基本操作 ls [选项][文件] 显示所有文件和目录 ls -al -a(A) 显示所有文件和目录,包括隐藏文件和目录(显示所有文件和目录,包括隐藏文件和 ...
 
随机推荐
- Hadoop各个启动流
			
(0)如果集群是第一次启动,需要格式化namenodehadoop@node1:~$ hdfs namenode –format (1)启动HDFS:hadoop@master:~$ start-df ...
 - ZOJ3705:Applications
			
Recently, the ACM/ICPC team of Marjar University decided to choose some new members from freshmen to ...
 - java的++和--操作符
			
只要是会java的都知道++和—操作符的用法,如 int i = 1; int j = i++; int k = ++i; 结果i为3,j为1,k为3. 那如下代码: int j = 0; for ( ...
 - CLion编译的exe文件无法在windows下正常运行
			
The program cannot start because libgcc_s_dw2-1.dll is missing from your computer. Try reinstalling ...
 - 自己动手设计并实现一个linux嵌入式UI框架(设计)
			
看了"自己动手设计并实现一个linux嵌入式UI框架"显然没有尽兴,因为还没有看到庐山真面目,那我今天继续,先来说说,我用到了哪些知识背景.如:C语言基础知识,尤其是指针.函数指针 ...
 - .net core i上 K8S(四).netcore程序的pod管理,重启策略与健康检查
			
上一章我们已经通过yaml文件将.netcore程序跑起来了,但还有一下细节问题可以分享给大家. 1.pod管理 1.1创建pod kubectl create -f netcore-pod.yaml ...
 - Django-01Django简介
			
1 MVC与MTV模型 MVCWeb服务器开发领域里著名的MVC模式,所谓MVC就是把Web应用分为模型(M),控制器(C)和视图(V)三层,他们之间以一种插件式的.松耦合的方式连接在一起,模型负责业 ...
 - Mysql创建、删除用户[转]
			
MySql中添加用户,新建数据库,用户授权,删除用户,修改密码(注意每行后边都跟个;表示一个命令语句结束): 1.新建用户 登录MYSQL: @>mysql -u root -p @>密码 ...
 - easyui里面的API=====》 load
			
在easyui里面有个API load,这个API实用性质很强,可以直接帮我加载页面的数据到想需要的相应输入框里面,但是也要注意,这些将要被填入数据的输入框里面的属性有个要求:其中输入框里面的name ...
 - 9012年,我终于找到了Pypi稳定的源....
			
前情提要 近日听说华为也做了一个华为开源镜像站所以去体验了一波然后此处做个总结吧. 既然是体验当然是从直观的第一感觉UI开始说起. 界面体验 一点进去挺好的界面很清爽. 最难能可贵的是终于没有再使用列 ...