您的位置:首页 > 其它

参考上一篇的资料写的去重程序

2015-09-24 18:56 288 查看
项目上线后如果有一个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;
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: