项目上线后如果有一个bug产生则自动将这个bug写入一个txt文件;
那么重复的txt文件就会很多,下面的代码在vc6.0上运行可以去重,(关于去重方式和char数组大小可以自行修改)
/// filePath -- bug所在的文件夹,(有子文件夹的情况没试过)
/// finalTxt -- 无重复的bug最终 放入的txt
#include"io.h"
#include<string>
#include<iostream>
#include<vector>
#include<fstream>
using namespace std;
void getFiles( string path, vector<string>& 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);
}
}
int main()
{
int i,j;
//char * filePath = "D:\\filetest\\dir";//"D:\\sample";
char * filePath = "\\\\0.0.0.0\\data\\errlog\\king\\0.0.40490";
char * finalTxt = "D:\\filetest\\final.txt";
vector<string> files;
getFiles(filePath, files );
// for(i = 0; i < files.size(); i++)
{
// cout<<files[i].c_str()<<endl; //
}
//先打开final.txt
ofstream out(finalTxt);
//获得文件内容无重复
vector<string> diffstr; //记录不同的串
int diff = 0;
for(i = 0; i< files.size(); i++)
{
char str[100];
ifstream in(files[i].c_str());
//while(!in.eof())
{
in>>str;
//in.getline(str, 100);
//cout<<str<<endl;
string s(str);
for(j = 0; j != diffstr.size(); j++)
{
if(s == diffstr[j])
break;
}
if(j == diffstr.size())
{
diffstr.push_back(s);
out<<endl<<endl<<"***********"<<++diff<<endl<<str<<endl;
while(!in.eof())
{
in>>str;
out<<str<<endl;
}
}
}
in.close();
}
out.close();
// for(i = 0; i!=diffstr.size(); i++)
{
// cout<<diffstr[i]<<endl;
}
}