string常用库函数
string的库函数非常多,若全部掌握是非常耗时间的,但是我们只需要掌握常用,重要的库函数即可,不常用的只需了解下即可,需要时,上C++标准官方库查找。
这里列举出本篇说明的函数insert、erase、swap、c_str、find、rfind、substr、getline
一:insert
功能:在pos的位置,插入字符串/字符
返回值:
-
当我们只传递值时;该函数返回指向被插入到集合容器中的元素的迭代器。
-
当我们传递带有值的位置时;该函数再次返回指向被插入到集合容器中的元素的迭代器。
-
当我们通过 position_1 和 position_2 时;该函数返回从 position_1 开始到 position_2 结束的范围之间的一组值
示例:
1 insert(size_t pos, string& str);
2 //在pos位置插入字符串str
3 insert(size_t pos, size_t n, char c);
4 //在pos位置插入n个字符c
1 string s1("Hello World");
2 cout <<"插入前:"<< s1 << endl;
3 s1.insert(0, "xxx");//在下标为0的位置 插入字符串xxx
4 cout <<"插入后(字符串):"<< s1 << endl;
5 s1.insert(0, 5, 'w');//在下标为0的位置 插入5个字符w
6 cout << "插入后(字符):" << s1 << endl;
insert也支持迭代器
1 s1.insert(s1.begin(), 2, 'o');//在begin的位置(开头)插入2个字符o
2 cout << "插入后(字符):" << s1 << endl;
3 s1.insert(s1.begin() + 3, 2, 'x');//在begin+3的位置(0+3)插入2个字符x
4 cout << "插入后(字符):" << s1 << endl;
insert的效率不高,因为插入必然要挪到数据
二:erase
功能:删除字符
1 s1.erase();//不给参数默认全删
2 cout << "删除后:" << s1 << endl;
3 s1.erase(s1.begin());//删除第一个字符(默认从0开始)
4 cout << "删除后:" << s1 << endl;
5 s1.erase(s1.begin() + 3);//删除第3个字符(默认从0开始)
6 cout << "删除后:" << s1 << endl;
7 s1.erase(3, 2);//从第三个字符开始,删除两个字符(删除第三个,第四个)
8 cout << "删除后:" << s1 << endl;
9 s1.erase(3);//从第三字符开始全删(包括第三个)
10 cout << "删除后:" << s1 << endl;
三:swap
功能:交换
swap在std库里有一个,string里也有一个
区别:
- string库里的 效率高,交换指针
- std库里的 效率低 浅拷贝交换
四:c_str
功能 以c语言char类型打印
返回一个指向正规C字符串的指针, 内容与本string串相同
五:find/rfind
功能 查找字符串/字符 返回它的下标(若没找到返回npos 类型最大值 或者 -1)
cout<<s2.find('H')<<endl;//从s2找字符H 返回它的下标
cout << s2.rfind('o') << endl; //反方向从s2找字符H 返回它的下标
cout << s2.find("ell");//从s2找字符串ell 返回第一个字符的下标
1 cout << s2.rfind("ll") << endl;//反方向从s2找字符串ll 返回它第一个字符的下标
六:substr
功能:取字符
s1.substr(pos,n);//从pos的位置开始(包括pos),取n个字符 (若没给n的参数,默认取完)
1 cout << s2.substr(1, 2) << endl;//从下标为1的位置开始 取2个字符
1 cout << s2.substr(1) << endl;//从下标为1的位置开始 全部取完
七:getline
功能:读取数据
与cin相同 同样是读取数据
区别:
- cin是流 而getline是函数
- cin的结束标志是空格 而getline的结束标志是换行
getline(cin,name)
1 string s3("");
2 getline(cin, s3);
3 cout << s3 << endl;
这就是本篇的全部内容,如果对您有帮助,希望能获得您的点赞,您的点赞就是对我的最大支持与动力!
原文链接: https://www.cnblogs.com/LonelyMoNan/p/stringku.html
欢迎关注
微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍
原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/6020
非原创文章文中已经注明原地址,如有侵权,联系删除
关注公众号【高性能架构探索】,第一时间获取最新文章
转载文章受原作者版权保护。转载请注明原作者出处!