代码简洁,亲测可用。

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

void getFiles(string path, vector<string>& files)
{
//文件句柄
long hFile = ;
//文件信息
struct _finddata_t fileinfo;
string p;
if ((hFile = _findfirst(p.assign(path).append("\\*").c_str(), &fileinfo)) != -)
{
do
{
//如果是目录,迭代之
//如果不是,加入列表
if ((fileinfo.attrib & _A_SUBDIR))
{
if (strcmp(fileinfo.name, ".") != && strcmp(fileinfo.name, "..") != )
getFiles(p.assign(path).append("\\").append(fileinfo.name), files);
}
else
{
files.push_back(p.assign(path).append("\\").append(fileinfo.name));
}
} while (_findnext(hFile, &fileinfo) == );
_findclose(hFile);
}
}
void main()
{
InitConsoleWindow1();
char * filePath = "E:/gait/004";
vector<string> files; getFiles(filePath, files); char str[];
int size = files.size();
for (int i = ; i < size; i++)
{
cout << files[i].c_str() << endl;
}
}

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

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

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

#include<string>
#include<iostream>
using namespace std; //第一种替换字符串的方法用replace() void string_replace(string&s1,const string&s2,const string&s3)
{
string::size_type pos=;
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=;
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函数外面导致只修改了一个文件的名字。

就酱~

最新文章

  1. BZOJ1264——[AHOI2006]基因匹配Match
  2. SelectionSort,选择排序
  3. HTTP Code
  4. Linux系统中如何挂载第二块硬盘
  5. 记录mysql的具体操作明细
  6. Swift3.0P1 语法指南——基本操作符
  7. 使用wget
  8. JavaScript中点号“.”的多义性
  9. MUI - 手势
  10. C语言基础:进制转换,变量,常量,表达式,基本数据类型,输出函数,输入函数,运算符. 分类: iOS学习 c语言基础 2015-06-10 21:39 25人阅读 评论(0) 收藏
  11. Oracle数据库——SQL基本查询
  12. C#获取当前应用程序所在路径及环境变量
  13. 备份BinLog并压缩 全备份
  14. 更改Oracle实例的字符集
  15. 使用线程执行堆栈StackTraceElement设计Android日志模块
  16. 实验楼 1. k-近邻算法实现手写数字识别系统--《机器学习实战 》
  17. 【TRICK】解决锚点定位向下浮动Xpx问题
  18. iOS 中判断应用程序是否为第一次打开
  19. git上clone需要ssh时
  20. 腾讯的产品思维 VS 阿里的终局思维

热门文章

  1. UWP 检测网络状态
  2. STM8S——Universal asynchronous receiver transmitter (UART)
  3. lua编程之协程介绍
  4. Qt-网易云音乐界面实现-2 红红的程序运行图标,和相似下方音乐条
  5. load和loads的区别
  6. 在linux环境下为eclipse配置jdk以及Tomcat服务(附图解详细步骤)
  7. Webrtc源码走读(一)
  8. 时间戳使用的bug,你见过么
  9. 面向对象OO第15次作业总结
  10. java 实验1