原文作者: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++ 常用的遍历,删除,分割等等文件处理函数代码实现的更多相关文章

  1. 文件操作(FILE)与常用文件操作函数

    文件 1.文件基本概念 C程序把文件分为ASCII文件和二进制文件,ASCII文件又称文本文件,二进制文件和文本文件(也称ASCII码文件)二进制文件中,数值型数据是以二进制形式存储的, 而在文本文件 ...

  2. Linux和Windows的遍历目录下所有文件的方法对比

    首先两者读取所有文件的方法都是采用迭代的方式,首先用函数A的返回值判断目录下是否有文件,然后返回值合法则在循环中用函数B直到函数B的返回值不合法为止.最后用函数C释放资源. 1.打开目录 #inclu ...

  3. Ubuntu系统下常用的新建、删除、拷贝文件命令

    我们在Ubuntu系统中安装程序时,经常要在usr目录下新建.拷贝文件,此文件夹在Linux类系统中需要root权限才能访问,因此用常规的鼠标右键菜单操作是无效的,今天分享一下在终端中使用命令新建.拷 ...

  4. [转]Ubuntu系统下常用的新建、删除、拷贝文件命令

    我们在Ubuntu系统中安装程序时,经常要在usr目录下新建.拷贝文件,此文件夹在Linux类系统中需要root权限才能访问,因此用常规的鼠标右键菜单操作是无效的,今天分享一下在终端中使用命令新建.拷 ...

  5. git 常用命令(含删除文件)

    git 常用命令(含删除文件) Git常用操作命令收集: 1) 远程仓库相关命令 检出仓库:$ git clone git://github.com/jquery/jquery.git 查看远程仓库: ...

  6. Java精选笔记_IO流【File(文件)类、遍历目录下的文件、删除文件及目录】

    File(文件)类 File类用于封装一个路径,该路径可以是从系统盘符开始的绝对路径,也可以是相对于当前目录而言的相对路径 File类内部封装的路径可以指向一个文件,也可以指向一个目录,在使用File ...

  7. C# 文件操作(全部) 追加、拷贝、删除、移动文件、创建目录 修改文件名、文件夹名

    原文:C# 文件操作(全部) 追加.拷贝.删除.移动文件.创建目录 修改文件名.文件夹名 本文也收集了目前最为常用的C#经典操作文件的方法,具体内容如下:C#追加.拷贝.删除.移动文件.创建目录.递归 ...

  8. C# 文件操作 全收录 追加、拷贝、删除、移动文件、创建目录、递归删除文件夹及文件....

    本文收集了目前最为常用的C#经典操作文件的方法,具体内容如下:C#追加.拷贝.删除.移动文件.创建目录.递归删除文件夹及文件.指定文件夹下 面的所有内容copy到目标文件夹下面.指定文件夹下面的所有内 ...

  9. Linux 系统常用命令汇总(一) 文件和目录操作

    文件和目录 命令 选项 注解 示例 文件的基本操作 ls [选项][文件] 显示所有文件和目录  ls -al  -a(A) 显示所有文件和目录,包括隐藏文件和目录(显示所有文件和目录,包括隐藏文件和 ...

随机推荐

  1. 【Linux】GCC编译器

    [简介] GCC是Linux下的编译工具集,是GNU Compiler Collection的缩写,包含gcc g++ 等编译器.GCC工具集不仅能编译C/C++语言,其他例如Object-c.Pas ...

  2. Gym - 100989H (贪心)

    After the data structures exam, students lined up in the cafeteria to have a drink and chat about ho ...

  3. Android-监听操作系统短信

    想要访问Android操作系统的ContentProvider就需要明白以下原理: 在Android操作系统里面的 /packsges/目录: apps: 很多的系统应用,例如:联系人,浏览器,音乐播 ...

  4. winfrom 右下角弹窗(渐渐消失)

    using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...

  5. 简单的jquery左侧导航栏和页面选中

    这里是要实现导航的左侧并选中的,此功能需引用jquery 左侧导航: <div class="box"> <ul class="menu"&g ...

  6. IIS7 配置ssl证书 多域名绑定443端口

    IIS7下多个子域名同时配置https协议,但IIS7默认支持单个443端口造成端口冲突: 解决方案:先把每个域名配置不同的端口 例:444,445,446等 然后在:C:\Windows\syste ...

  7. 高性能无锁队列 Disruptor 初体验

    原文地址: haifeiWu和他朋友们的博客 博客地址:www.hchstudio.cn 欢迎转载,转载请注明作者及出处,谢谢! 最近一直在研究队列的一些问题,今天楼主要分享一个高性能的队列 Disr ...

  8. 小程序:如何让scroll-view包含内容完整滚动

    1.关于scroll-view scroll-view是小程序用来控制可滚动视图区域的组件. 通过设置scroll-x ="true" 或 scroll-y="true& ...

  9. leetcode 19. 删除链表的倒数第N个节点 JAVA

    题目: 给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点. 示例: 给定一个链表: 1->2->3->4->5, 和 n = 2. 当删除了倒数第二个节点后,链 ...

  10. Blocks to Cubes

    Bholu the Pandit on this New Year wanted to divide his Cuboidal Packaging block into cubes. But he l ...