博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
c++ 替换修改一个文件夹下的所有文件的文件名
阅读量:4941 次
发布时间:2019-06-11

本文共 2376 字,大约阅读时间需要 7 分钟。

代码简洁,亲测可用。

1,首先来获取(输出)一个文件夹中所有的文件名

void getFiles(string path, vector
& 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 { files.push_back(p.assign(path).append("\\").append(fileinfo.name)); } } while (_findnext(hFile, &fileinfo) == 0); _findclose(hFile); }}void main(){ InitConsoleWindow1(); char * filePath = "E:/gait/004"; vector
files; getFiles(filePath, files); char str[30]; int size = files.size(); for (int i = 0; i < size; i++) { cout << files[i].c_str() << endl; }}

因为当时写的是个mfc框架,Initconsolewindow1()是为了能在mfc运行时输出控制台信息

void InitConsoleWindow1(){    int nCrt = 0;    FILE* fp;    AllocConsole();    nCrt = _open_osfhandle((long)GetStdHandle(STD_OUTPUT_HANDLE), _O_TEXT);    fp = _fdopen(nCrt, "w");    *stdout = *fp;    setvbuf(stdout, NULL, _IONBF, 0);}

 

 

2,然后替换(修改)其中的某些字符

 

#include
#include
using namespace std;//第一种替换字符串的方法用replace()void string_replace(string&s1,const string&s2,const string&s3){ string::size_type pos=0; string::size_type a=s2.size(); string::size_type b=s3.size(); while((pos=s1.find(s2,pos))!=string::npos) { s1.replace(pos,a,s3); pos+=b; }}//第二种替换字符串的方法用erase()和insert()void string_replace_2(string&s1,const string&s2,const string&s3){ string::size_type pos=0; string::size_type a=s2.size(); string::size_type b=s3.size(); while((pos=s1.find(s2,pos))!=string::npos) { s1.erase(pos,a); s1.insert(pos,s3); pos+=b; }}

 

3,利用c++改变文件夹内文件的名字,使之变成你修改后的。

 rename(oldfilename,newfilename);

oldfilename是char*型,c的这个函数真是很好使啊。

 

值得注意的是:

1,替换函数,while中的顺序在!=前面是个整体,一开始漏掉那个括号导致没有跳出循环

2,替换函数,整体基本都要在读取文件的while函数中,除了个别不会改变的变量,如a,b的值。之前把string::size_type pos = 0;放在读取文件的while函数外面导致只修改了一个文件的名字。

就酱~

 

转载于:https://www.cnblogs.com/Daringoo/p/5405946.html

你可能感兴趣的文章
MySQL对时间的处理总结
查看>>
笔记四:python乱码深度剖析二
查看>>
《PHP程序员面试笔试宝典》——如何回答技术性的问题?
查看>>
【转载】Amit’s A star Page 中译文
查看>>
注册谷歌账号并验证时显示号码无法用于验证的问题
查看>>
Hive 变量和属性
查看>>
Python安装第三方库 xlrd 和 xlwt 。处理Excel表格
查看>>
课后作业-阅读任务-阅读提问-3
查看>>
Asp.Net Core 中利用QuartzHostedService 实现 Quartz 注入依赖 (DI)
查看>>
细说sqlserver索引及SQL性能优化原则
查看>>
一般数据库增量数据处理和数据仓库增量数据处理的几种策略
查看>>
centos6.5适用的国内yum源:网易、搜狐
查看>>
视频直播技术(三):低延时直播经验总结
查看>>
Application failed to start because it could not find or load the QT platform plugin “windows”
查看>>
python合并多表或两表数据
查看>>
第一个python作业题目以及代码
查看>>
Windows Azure 社区新闻综述(#71 版)
查看>>
Windows XP 的最高版本 .net framework 安装
查看>>
本机不装Oracle,使用plsql连接远程Oracle的方法
查看>>
先说一下JS的获取方法,其要比JQUERY的方法麻烦很多,后面以JQUERY的方法作对比。...
查看>>