string
// string::substr
#include <iostream>
#include <string>
int main ()
{
std::string str="We think in generalities, but we live in details.";
// (quoting Alfred N. Whitehead)
std::string str2 = str.substr (3,5); // "think"
std::size_t pos = str.find("live"); // position of "live" in str
std::string str3 = str.substr (pos); // get from "live" to the end
std::cout << str2 << ' ' << str3 << '\n';
return 0;
}
//Output:
//think live in details.
#include <string>
#include <iostream>
#include<vector>
#include<map>
using namespace std;
int main(){
string temp;
vector<string> ans;
map<string, string> dic;
/*dic["a"] = "aa";
dic["b"] = "bb";
for (auto s : dic)
cout << s.second << endl;*/
int m, n;
cin >> m >> n;
int a = m + n+1;
while (a--){
getline(cin, temp);
if (!temp.size()) continue;
if (temp[0] == '<')
ans.push_back(temp);
else{
int pos = temp.find(" ");
string signal = "{{ " + temp.substr(0, pos) + " }}";
string val = temp.substr(pos + 2, temp.size() - pos - 3);
dic[signal] = val;
}
}
for (int i; i < ans.size();i++){
for (map<string, string>::iterator it = dic.begin(); it != dic.end();it++){
int pos;
while ((pos = ans[i].find(it->first)) != string::npos){
ans[i].replace(pos, it->first.size(), it->second);
}
}
}
//cout << ans[0] << endl;
for (int i = 0; i < ans.size();i++)
cout << ans[i]<< endl;
system("pause");
return 0;
}