主要是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 }