大家好,欢迎来到IT知识分享网。
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://yundeesoft.com/31284.html