- const int Maxsize= 126;
- #include <iostream>
- #include <string>
- #include <fstream>
- using namespace std;
- int match(string &s,string s2)
- {
- int i=0;
- int n=0;
- if(s.length()<s2.length())
- return n;
- while (i <= s.length() - s2.length())
- {
- int j = 0;
- while ((s[i] == s2[j] || (s2[j]>=97)&&(s2[j]<=122)&&(toupper(s[i])==toupper(s2[j]))) && j < s2.length())
- {
- ++i;
- ++j;
- }
- if (j == s2.length())
- {
- for(;j>0;j--)
- s[i-j]='*';
- n++;
- continue;
- }
- i = i - j + 1;
- }
- return n;
- }
- int main(){
- ofstream out("ss.txt");
- ifstream in2;
- ifstream in;
- string key[Maxsize],ss;
- in.open("keyword.txt");
- if(!in)
- cerr<<"Could not open keyword.txt"<<endl;
- int i =0,j,k=1,n,sum;
- in>>ss;
- key[i]=ss;
- i++;
- while(!in.eof())
- {
- in>>ss;
- for(j=0;j<i-1&&ss!=key[j];j++);
- if(j==i-1)
- {key[i]=ss;
- i++;
- }
- }
- cout<<i;
- in.close();
- string content;
- in2.open("content.txt");
- getline(in2,content);
- while(!in2.eof())
- {
- //输入评论文件并计算出现次数
- cout<<k;
- sum=0;
- n=0;
- for(j=0;j<i-1;j++)
- {
- n=match(content,key[j]);
- sum+=n;
- }
- out<<k<<"/t"<<sum<<endl;
- k++;
- getline(in2,content);
- }
- in2.close();
- return 1;
- }