参考上一篇的资料写的去重程序
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;
}
}
那么重复的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;
}
}
相关文章推荐
- 从零开始搭建高可用IM系统
- perl多进程主进程等子进程结束
- java.lang.ClassCastException: com.sun.proxy.$Proxy4 cannot be cast to
- 关于参加OpenBLAS介绍会的一些心得
- 【POJ解题】:POJ3507 Judging Olympia
- 黑马程序员——Swift学习笔记:函数
- 黑马程序员——Swift学习笔记:函数
- 华为oj系列
- hdu1150Machine Schedule(好题)
- kmp模式串2求匹配的趟数
- Git 多人协同开发
- oracle db于,一个特定的数据字典pct miss其计算公式
- jquery each 用法
- Java 动态代理机制分析及扩展,第 1 部分
- 单例模式/singleton模式/创建型模式
- Eclipse 中使用Genymotion 作为模拟器的步骤
- UI_UIScrollView(滚动视图)的图文理解
- C#读取Modbus数据
- Python 反转字典 即key和val互换
- MySQL语句内求和 选择语句外的表进行查询求和