#include<bits/stdc++.h>
using namespace std;
#define ll long long
map<string,ll> mp;
set<string> ss;
void cnt(const string s,string sp)
{
for(ll i=0; i<s.length(); i++)
{
if(s[i]==sp[0])
{
int judge=1;
for(ll j=0; j<sp.length(); j++)
{
if(s[i+j]!=sp[j])
{
judge=0;
break;
}
}
if(judge)
{
mp[sp]++;
}
}
}
}
int main()
{
ll n;
string s,sp;
ifstream fin;
char c;
fin.open("wenzhang.txt",ios::in);
if(!fin)
{
cout<<"cannot open input file"<<endl;
exit(1);
}
while(fin>>c)
{
if(isalpha(c))
{
c=tolower(c);
}
s+=c;
}
cout<<"原文章为:"<<s<<endl;
cout<<"输入你想查找的字符串的个数:"<<endl;
cin>>n;
cout<<"输入这些字符串:"<<endl;
for(ll i=1; i<=n; i++)
{
cout<<"第"<<i<<"个字符串:"<<endl;
cin>>sp;
ss.insert(sp);
}
for(set<string>::iterator is=ss.begin(); is!=ss.end(); is++)
{
cnt(s,*is);
}
ofstream fout;
fout.open("appeartimes.txt",ios::out);
if(!fout)
{
cout<<"cannot open output file"<<endl;
exit(1);
}
for(set<string>::iterator is=ss.begin();is!=ss.end();is++)
{
cout<<*is<<"出现的次数为:"<<mp[*is]<<endl;
fout<<*is<<"出现的次数为:"<<mp[*is]<<endl;
}
return 0;
}
这个程序是用文件输入,只需要在工程文件中建立一个名为wenzhang.txt的文本文档并把要检索的文章粘贴进去即可。
最开始的时候我用fin>>s打算把整篇文章输入到一个string中发现遇到空格就停止输入了,因此才改用while(cin>>c)的形式输入到string中,当然用scanf("%c",&c)!=EOF也可以输入