c++里面的find()和erase()

1、find()函数

使用find()函数需要#include<algorithm>

str_big.find(str_small) 代表从str_big 的所有子串中查找与 str_small匹配的子串,找到则返回str_small第一个字符在str_big中的下标,找不到则返回string::npos(如果有多个字符都可以匹配,那么只会返回第一个匹配的)

    #include<algorithm>
    string str_big = "hello world! hello world!";
    char ch = 'l';//查找单个字符
    string str_small='or';//查找字符串
    if(str.find(ch)!=string::npos){ 
        cout<<str.find(ch)<<endl;    //输出2
    }
    if(str.find(str_small)!=string::npos){ 
        cout<<str.find(str_small)<<endl;   //输出7
    }

这儿有一个简单的实例 5、判断一个小字符串str_small是否是另一个大字符串str_big的子串。

2、erase()函数

erase函数的原型如下:
(1)string& erase ( size_t pos = 0, size_t n = npos );
(2)iterator erase ( iterator position );
(3)iterator erase ( iterator first, iterator last );
也就是说有三种用法:
(1)erase(pos,n); 删除从pos开始的n个字符,比如erase(0,1)就是删除第一个字符,,必须给定n的值。如果不给n的值会报错,pos,n都是int型
(2)erase(position);删除position处的字符(position是个string类型的迭代器)
(3)erase(first,last);删除从first到last之间的字符(first和last都是迭代器)

实例:

string str="abcdefghijklmn";
/*第一种用法*/
str.erase(0,1)         //删除第一个字符  
cout << str << endl;   //str="bcdefghijklmn"
str.erase(2,3)         //删除从2开始的3个字符  
cout << str << endl;   //str="abfghijklmn"
/*第二种用法*/
str.erase (str.begin()+5);   //删除第5个字符
cout << str << endl;         // str="abcde"
str.erase(str.end() - 5);    //删除倒数第五个字符
cout << str << endl;         // str="abcdefhi"
/*第三种用法*/
str.erase (str.begin()+5,str.end() - 5);  //保留前五个和后五个
cout << str << endl;         // str="abcdejklmn"

第二种用法的例子见这篇博文的标题11 11、删除字符串的最后n个字符三种方法

find()函数和erase()函数联合使用来删除多个字符示例,见这篇博文 删除字符串中出现次数最少的字符

发布了78 篇原创文章 · 获赞 20 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/qq_43657442/article/details/103088305