#include<iostream>
#include<stdio.h>
#include<map>
#include<algorithm>
#include<String>
using namespace std;
int main()
{
int tvarNum,cvarNum;//文本行数tvarNum,对应的变量行数cvarNum
cin>>tvarNum>>cvarNum;//输入变量
string input,output,temp;
map<string,string> varDict;
getchar();//除去回车键符
for(int i=0;i<tvarNum;i++)//将文本中各行输入
{
getline(cin,temp);//输入一行
input+=temp+'\n';//换行
}
string key,value;
for(int i=0;i<cvarNum;i++)
{
cin>>key;
getline(cin,temp);
int startQ=temp.find("\"");
int endQ=temp.rfind("\"");
cout<<startQ<<endQ<<endl;
value=temp.substr(startQ+1,endQ-startQ-1);
varDict[key]=value;
}
int startPos, endPos; // startPos->{{ endPos->}}
int startPoint = 0; // start position for string.find
int ss=2;
while(ss) {
startPos = input.find("{{", startPoint);
endPos = input.find("}}", startPos);
if(startPos<0||endPos<0) break;
key=input.substr(startPos+2,endPos-startPos-4);
value="";
if(varDict.find(key)!=varDict.end()) value=varDict[key];
output+=input.substr(startPoint,startPos-startPoint)+value;
startPoint=endPos+2;
}
ouput+=input.substr(startPoint,input.size());
return 0;
}
转载请注明原文地址: https://ju.6miu.com/read-32602.html