问题描述
试题编号: | 201509-3 |
试题名称: | 模板生成系统 |
时间限制: | 1.0s |
内存限制: | 256.0MB |
问题描述: | 问题描述 成成最近在搭建一个网站,其中一些页面的部分内容来自数据库中不同的数据记录,但是页面的基本结构是相同的。例如,对于展示用户信息的页面,当用户为 Tom 时,网页的源代码是 输入格式 输入的第一行包含两个整数 m, n,分别表示模板的行数和模板生成时给出的变量个数。 输出格式 输出包含若干行,表示模板生成的结果。 样例输入 11 2 样例输出 <!DOCTYPE html> 评测用例规模与约定 0 ≤ m ≤ 100 |
#include <string>
#include <cstdio>
#include <iostream>
#include <map>
using namespace std;
map<string,string> mp;
int main()
{
int n,m;
string input="";
string ans="";
cin>>n>>m;
getline(cin,input);
for(int i=0;i<n;i++)
{
getline(cin,input);
ans+=input;
ans+="\n";
}
for(int j=0;j<m;j++)
{
getline(cin,input);
int pos=input.find(" ");
int len=input.length();
string key="{{ ";
key+=input.substr(0,pos);
key+=" }}";
string value=input.substr(pos+2,len-pos-3);
pos=0;
while(ans.find(key,pos)!=string::npos)
{
int p=ans.find(key,pos);
int l=key.length();
ans.erase(p,l);
ans.insert(p,value);
pos=p+l;
}
}
string str1="{{ ";
string str2=" }}";
int pos=0;
while(ans.find(str1,pos)!=string::npos)
{
int p=ans.find(str1,pos);
int q=ans.find(str2,pos);
ans.erase(p,q+str2.length()-p);
pos=q+str2.length();
}
cout<<ans<<endl;
return 0;
}