我经常对很多图片进行操作,所以经常要导出大批量图片的名字到txt文件里保存起来供后续批量处理图片。
我的方法是,假如你大量的图片存储在d:/img/里,那么你用鼠标选中img 文件夹,按住shift键,右键在此处打开命令窗口。
键入 TREE /F >d:\list.txt
这样在D盘就会生成一个list.txt文件,不过要手动删掉首尾的一些字和空行,这样剩下每一行的图片名字前都有空行,下面我贴出来我在网上找到的的用来去除这些空格的代码。
//
//本程序用于将文件中的多余空格去除并保存到另一文件中
#include <iostream>
#include <fstream>
void alltrim(char *);
using namespace std;
void alltrim(char *str)
{
char *p=str,*q=str;
bool notSpace=false;
while(*q==' ')
q++;
while(*q!='\0')
{
if (*q!=' ')
{
notSpace=true;
*p++=*q++; // 不是空格,复制
}
else if (notSpace) //是空格,但目前是第一个(因为之前notSpace=true;的条件是遇非空格)
{
notSpace=false; //第一个空格仍然要复制
*p++=*q++;
}
else //如遇第二个或更后的空格,正是由于遇到第一个空格并复制后,notSpace=false;的原因,会走到这儿
{
q++; //不复制
}
}
*p='\0';
}
int main()
{
ifstream sourceFile;
ofstream targetFile;
char str[100];
int num_char=0, num_line=0;
int i;
sourceFile.open("list.txt<span style="font-family: Arial, Helvetica, sans-serif;">", ios::in); </span>
if(!sourceFile) //测试是否成功打开
{
cerr<<"input file open error!"<<endl;
exit(1);
}
targetFile.open("nospace.txt", ios::out);
if(!targetFile) //测试是否成功打开
{
cerr<<"output file open error!"<<endl;
exit(1);
}
while (!sourceFile.eof()) //一篇文章由多行构成
{
sourceFile.getline(str,100,'\n');
alltrim(str); //删去多余空格
//保存删去空格后的字符
i=0;
while(*(str+i)!='\0')
{
targetFile.put(*(str+i));
++i;
}
targetFile.put('\n');
}
sourceFile.close();
targetFile.close();
cout<<"处理完毕,请查看文件。"<<endl;
return 0;
}
原文地址:http://blog.csdn.net/chenxi_wind/article/details/45541183