急盼高人指点,本人感激涕零!!!!
大概思路:
前提:用户输入规律的时候每个条件必须以回车结束
一.信息块定义:
1.信息快是从某个文件中按照一定的规律查找到的信息
2.提取信息的规律是客户输入的规律
3.一个信息块可以由若干个字符串或若干个子信息块组成
二.难点
1.需要分析客户输入的规律,从客户输入的规律中找关键字符串,还要找到目标文件的信息。
example:(从目标文件1中查找符合下面规律的信息)
(规律)回车+客户号码1+回车+**********+客户信息(子信息块:回车+客户号码2
回车+**********+客户名称2+回车)+客户名称1+ 回车
(结果)回车+客户号码1+(目标文件中和客户号码1相匹配的字符串后面的字符串,到???????????结束)+回车+**********+客户信息(子信息块:回车+客户号码2++(目标文件中和客户号码2相匹配的字符串后面的字符串,到???????????结束)+回车+**********+客户名称1+(目标文件中和客户名称1相匹配的字符串后面的字符串,到???????????结束)+回车
例如:
用户输入:
纳税人识别号:
##########
纳税人名称:
查询目标文件(目标文件中有若干条记录,是从某个软件的日志中备份出来的文本文件)得到的输出结果应为:
纳税人识别号:4101111111111
##########
纳税人名称:河南软件公司
纳税人识别号:4101111111112
##########
纳税人名称:上海软件公司
纳税人识别号:4101111111113
##########
纳税人名称:深圳软件公司
...........
以下是我涂鸦的几行代码,请高人修改。多谢!!!!
#pragma warning(disable:4786)
#include <string>
# include <iostream>
# include <stdio>
# include <list>
#include <vector>
#include <algorithm>
//用户输入的规律必须每次要输入空格
using namespace std;
void main()
{
typedef vector<string> glVector();//规律数组glVector()用语存放规律
typedef vector<string> xxVector();//信息数组xxVector()用于存放提取出来的信息
typedef glVector::iterator glIT;//当前指针
strIT start,end,it;
start=glVector.begin ();
end=glVector.end ();
string s1;
string *wj=file(wjvector);//行指针*wj指向文件的首行
string *gl=file(glvector());//行指针gl指向用户输入的规律
cout << "Enter a sentence (以空格和回车为结束符号):";//用户输入规律
int i_line = 0;
while(true)
{
if(strstr("glvector", "\r\n"))
i_line++;
else
{
return i_line;
break;
}
} //统计客户输入规律的行数(关键字的个数)
int i_line1 = 0;
while(true)
{
if(strstr("wenjian", "\r\n"))
i_line1++;
else
{
return i_line1;
break;
}
}
const int size = i_line;//盛放规律的数组长度
const int size1 =i_line1;//盛放信息的数组长度
strVector glVector(size);//规律组
string value("aaa");//初始化为aaa
strVector wjVector(size1);//文件组
string value("bbb");//初始化为bbb
for(int i=0;i<i_line;i++)
{
string glline=getline(cin,s1, ' ');
glvector[i]=glline;//把每行的规律作为规律数组的一个元素
*gl++;//每次循环都指向下一行
for(int j=0;j<i_line1;j++)
{
string value("bbb");
string wjline=getline(wenjian,s1, '\n');//回车作为一行的结束符号(必须是一行一种信息)
wjvector[j]=wjline;//把每行的文件作为文件数组的一个元素
strstr("wjvector[j]",glvector[i]);
if(strstr("wjvector[j]",glvector[i])=true)//匹配成功
{
cout<<wjvector[j]<<"\r\n"<<endl;
}
*wj++;
else
{
*wj++;
continue;
}
}
else
cout<<"你的查询条件找不到!请重新输入!"<<endl;
}
for(it=start;it!=end;it++)
*gl=NULL;//释放*gl
*wj=NULL;
return;
}
free std;