zoukankan      html  css  js  c++  java
  • STL之string插入

      1 #include <iostream>
      2 #include <string>
      3 
      4 using namespace std;
      5 int main()
      6 {
      7     string s("hello");
      8     string s2("abcdef");
      9 
     10     string::iterator p = s.begin();
     11     cout << *p << endl;
     12     s.insert(p, 'A');   //插入之后,p指向新插入的数据
     13     cout << *p << endl;
     14     cout << s << endl;
     15 
     16     //每执行插入操作一次,gcc下必须重新给迭代器赋值
     17     //否则内存泄漏
     18     // 为什么呢?不明白
     19     p = s.begin();
     20     s.insert(p,'B');
     21     cout << *p << endl;
     22     cout << s << endl;
     23 
     24     string::iterator b = s2.begin();
     25     string::iterator e = s2.end();
     26 
     27     p = s.begin();
     28     s.insert(p, b, e);
     29     cout << s << endl;
     30 
     31     s = "hello";
     32     cout << s <<endl;
     33     s.assign(b, e);
     34     cout << s <<endl;
     35 
     36     s.assign(8, 'k');
     37     cout << s <<endl;
     38 
     39     s = "abcdef";
     40     p = s.begin();
     41     s.erase(p);     //删除
     42     cout << s <<endl;
     43 
     44     p = s.begin();
     45     p++;
     46     p++;
     47     string::iterator p2 = s.end();
     48     p2--;
     49     s.erase(p, p2);
     50     cout << s <<endl;
     51 
     52     s = "hello";
     53     s2 = "abc";
     54     s.insert(0, 3, 'A');
     55     cout << s <<endl;
     56 
     57     s.insert(5, s2);    //位置从0开始,第6个元素之前
     58     cout << s <<endl;
     59 
     60     s2 = "12345";
     61     s.insert(0, s2, 2, 3);
     62     cout << s <<endl;
     63 
     64     char *cp = "Stately plump Buck";
     65     s.assign(cp, 7);
     66     cout << s <<endl;
     67     s.assign(cp);
     68     cout << s <<endl;
     69 
     70     s = "hello";
     71     s.insert(0, cp, 7);
     72     cout << s <<endl;
     73     s = "hello";
     74     s.insert(0, cp);
     75     cout << s <<endl;
     76 
     77     s = "hello";
     78     s2 = "abcdef";
     79     s.assign(s2, 2, 3);
     80     cout << s << endl;
     81                                
     82     s.erase(2, 3);
     83     cout << s <<endl;
     84 
     85     s = "123456789";
     86     s.erase(s.size()-5, 1); //删除字符串的倒数第5个;
     87     cout << s <<endl;
     88 
     89     s.insert(s.size(), 5, '!'); //size()最后一个的后一个,insert在size()之前插入;
     90     cout << s <<endl;
     91 
     92     s = "abc";
     93     s.erase(0, 1).insert(0, "A");
     94     cout << s <<endl;
     95 
     96     s = "abc";
     97     s[0] = 'A';
     98     cout << s <<endl;
     99     return 0;
    100 }
    101        

     只适合string的操作:

      获取子串:substr()函数;--------3个重载函数

      替换函数:replace()函数;-------6个重载函数

      尾加函数:append()函数;--------10个重载函数;

     1 #include <iostream>
     2 #include <string>
     3 
     4 using namespace std;
     5 
     6 int main()
     7 {
     8     string s("hello world");    
     9     string s2 = s.substr(6, 5); //从第7个位置开始的5个字符;
    10     string s3 = s.substr(6, 50);    //从第7个位置开始的50个字符,实际上达不到50个;
    11     cout << s3 << endl;
    12 
    13     s2 = s.substr(6);
    14     cout << s2 << endl;
    15 
    16     s = "C++ Primer";
    17     s.append(" 3rd Ed. ");
    18     cout << s << endl;
    19     
    20     s.insert(s.size(), " 3rd Ed. ");
    21     cout << s << endl;
    22 
    23     s.replace(11, 3, "4th");    //字符串替换
    24     cout << s << endl;
    25 
    26     s.replace(11, 3, "AAAAAA");
    27     cout << s << endl;
    28 
    29     return 0;
    30 }
     1 #include <iostream>
     2 #include <string>
     3 
     4 using namespace std;
     5 
     6 int main()
     7 {
     8     string name("AnnmaBelle");
     9     string::size_type pos1= name.find("Bell");
    10     if(pos1 == string::npos){
    11         cout << "not find" << endl;
    12     }else{
    13         cout << "find it, pos: " << pos1 << endl;   //pos1 = 4;
    14     }   
    15 
    16     name = "r2d3";
    17     string num("0123456789");
    18     string::size_type pos = 0;
    19     //find_first_of(), 查找name中的任意一个字符即返回;
    20     //查找name中数字,反之可以找字母
    21     //与之对应的是:find_last_of
    22     while((pos = name.find_first_of(num, pos))!=string::npos){
    23         cout << name[pos] << endl;  
    24         pos++;
    25     }   
    26 
    27     //find_first_not_of(),从num中查找name中字符,没有找到即返回string::npos
    28     //与之对应的是:find_last_not_of
    29     pos = 0;
    30     while((pos=name.find_first_not_of(num, pos))!=string::npos){
    31         cout << name[pos] << endl;
    32         ++pos;
    33     }
    34 
    35     string river("Mississippi");
    36     string::size_type first_pos = river.find("is"); //从前向后操作,找到第一个即返回,返回值是下标 
    37     if(first_pos != string::npos)
    38         cout <<"first_pos: "<< first_pos << endl;
    39     first_pos = river.rfind("is");  //从后向前操作,找到第一个即返回,返回值是下标 
    40     if(first_pos != string::npos)
    41         cout <<"last_pos: "<< first_pos << endl;
    42 
    43     return 0;
    44 }
  • 相关阅读:
    Django中关于MySQL的bug总结
    css的外边距合并或者外边距塌陷问题
    双十二开篇之作
    浅谈css的行内类型标签和块级标签
    css的padding和border问题
    Django中的bug总结
    css清除浮动的方法
    Ubuntu图标变成问号
    pku1149 PIGS
    sizeof()功能
  • 原文地址:https://www.cnblogs.com/chris-cp/p/4593926.html
Copyright © 2011-2022 走看看