您的位置:首页 > 其它

CCF-201509-3 模板生成系统

2016-04-09 14:49 281 查看

题解

注意下细节……

#include <iostream>
#include <string>
#include <algorithm>
#include <vector>
#include <cstdio>
#include <fstream>
#include <map>
using namespace std;

vector<string> tem;
int n, k;

int main()
{
#ifdef LOCAL
freopen("data.in", "r", stdin);
#endif // LOCAL

cin >> n >> k;
string line;
cin.ignore();
for(int i = 0; i < n; ++i){
getline(cin, line);
tem.push_back(line);
}

string key, val;
map<string, string> mp;
for(int i = 0; i < k; ++i){
cin >> key;
getline(cin, val);
val.erase(0, 2);
val.erase(val.length() - 1, 1);

mp[key] = val;
}

for(int i = 0; i < n; ++i)
{
size_t pos1, pos2, pre = 0;

while(1)
{
pos1 = tem[i].find("{{", pre);

if(pos1 == string::npos) break;

pos2 = tem[i].find("}}", pos1);

if(pos2 == string::npos) break;

string key = tem[i].substr(pos1 + 3, pos2 - pos1 - 4);
tem[i].replace(pos1, key.length() + 6, mp.count(key) ? mp[key] : "");
pre = pos1 + key.length();  //note
}

cout << tem[i] << endl;
}

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ccf easy+