#include <iostream>
#include <string>
//正确 100
//1 1
//{{ }}
//name "1"
//{{ }}
using namespace std;
int main()
{
int NUM1;
int NUM2;
cin>>NUM1;//文章的行数
cin>>NUM2;//变量的行数
string temp;
getline(cin,temp,'\n');
string a[NUM1];
string b[NUM2];
string c[NUM2];
int i;
for(i=0;i<NUM1;i++)//读取文章中的每行
{
getline(cin,a[i],'\n');
}
for(i=0;i<NUM2;i++)//得修改
{
cin>>b[i];//读取变量名
getline(cin,c[i],'\n');//读取变量值
}
for(i=0;i<NUM2;i++)//去掉变量值的引号
{
c[i]=c[i].substr(2,c[i].size()-3);
}
int j;
for(i=0;i<NUM1;i++)//遍历文章
{
//先find()再replace()
//while(1)
int pos;
for(pos=0;pos<a[i].size();pos++)
{
int pos1=a[i].find("{{ ",pos);
if(pos1==string::npos)
{
break;
}
int pos2=a[i].find(" }}",pos1+3);//加个break也没加分 //+3
if(pos2==string::npos)
{
break;
}
//cout<<pos2<<endl;
string ti=a[i].substr(pos1+3,pos2-pos1-3);
//cout<<ti<<endl;
int flag=0;
for(j=0;j<NUM2;j++)
{
if(ti==b[j])
{
flag=1;
a[i].replace(pos1,pos2-pos1+3,c[j]);
pos=pos1+c[j].size()-1;
break;
}
}
if(flag==0)
{
a[i].replace(pos1,pos2-pos1+3,"");
pos=pos1-1;
}
}
}
for(i=0;i<NUM1;i++)
{
cout<<a[i]<<endl;
}
return 0;
}
CSP考试 2015年09月第3题 模板生成系统 C++实现
最新推荐文章于 2022-09-28 22:00:48 发布