主要是string---STL的运用
趁机整理一下erase, find, substr, replace, insert
#include <bits/stdc++.h> using namespace std; int main () { string str="0123456789",tmp; // erase (起始位置,长度) tmp=str; tmp.erase(0,3); cout<<tmp<<endl; // 3456789 tmp=str; tmp.erase(3); cout<<tmp<<endl; // 012 // find (要寻找的字符,起始位置) 没有找到是-1 int x=str.find("123",3); cout<<x<<endl; // 1 x=str.find("123"); cout<<x<<endl; // -1 // insert (起始位置,字符串) tmp=str; tmp.insert(2,"abc"); cout<<tmp<<endl; // 01abc23456789 // replace (起始位置,长度,替换的字符串) tmp=str; tmp.replace(4,3,"abc"); cout<<tmp<<endl; // 0123abc789 // substr (起始位置,长度) tmp=str; string s1=tmp.substr(2,3); cout<<s1<<endl; // 234 tmp=str; s1=tmp.substr(2); cout<<s1<<endl; // 23456789 return 0; }
1 #include <bits/stdc++.h> 2 using namespace std; 3 const int N=107; 4 string str[N]; 5 map <string,string> mapp; 6 int main () 7 { 8 int m,n; cin>>m>>n; getchar(); 9 for (int i=0;i<m;i++) 10 getline(cin,str[i]); 11 for (int i=0;i<n;i++) { 12 string s1,s2; 13 cin>>s1; getline(cin,s2); 14 s2=s2.substr(2,s2.size()-3); 15 mapp[s1]=s2; 16 } 17 for (int i=0;i<m;i++) { 18 string s=str[i]; 19 string tmp; int j=0; 20 while (j<s.size()) { 21 int _s=s.find("{{ ",j); 22 int _e=s.find(" }}",_s); 23 if (_s!=-1&&_e!=-1) { 24 int len=_e-_s-3; 25 string txt=s.substr(_s+3,len); 26 txt=mapp[txt]; 27 s.replace(_s,_e+3-_s,txt); 28 j=_s+txt.size(); // j=_e+3; 字符串替换后 长度也发生了变化 29 } 30 else break; 31 } 32 cout<<s<<"\n"; 33 } 34 return 0; 35 }
抓住青春的尾巴。。。