文本处理题,没啥好说的,具体看代码吧
#include<iostream>
#include<cstdio>
#include<cstring>
#include<map>
#include<string>
using namespace std;
const int N=100;
string s[N];
map<string,string> m;
int main()
{
int n,m0;
string a,b,c;
cin>>n>>m0;
cin.ignore();
for(int i=0;i<n;i++)
getline(cin,s[i]);
for(int i=0;i<m0;i++)
{
cin>>a;
getline(cin,c);
m[a]=c.substr(2,c.length()-3);
}
for(int i=0;i<n;i++)
{
int prev=0,next;
for(;;)
{
if((prev = s[i].find("{{ ", prev)) == (int)string::npos)
break;
if((next = s[i].find(" }}", prev)) == (int)string::npos)
break;
a=s[i].substr(prev+3,next-prev-3);
s[i].replace(s[i].begin()+prev,s[i].begin()+next+3,m.count(a)?m[a]:"");
prev+=m.count(a)?m[a].length():0;
}
}
for(int i=0;i<n;i++)
cout<<s[i]<<endl;
return 0;
}