C++ string 类函数总结(用的非常多,这里单独总结一下)
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了C++ string 类函数总结(用的非常多,这里单独总结一下),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3282字,纯文字阅读大概需要5分钟。
内容图文
![C++ string 类函数总结(用的非常多,这里单独总结一下)](/upload/InfoBanner/zyjiaocheng/621/42a216585b3e4eeb8136ae2182a60c5d.jpg)
C++中string常用函数用法总结
string(s小写)是C++标准库中的类,纯C中没有,使用时需要包含头文件#include<string>,注意不是<string.h>,下面记录一下string中比较常用的用法。
string的定义及初始化
string s1 = "hello"; //初始化字符串 string s2 ("world"); //另一种初始化 string s3; //初始化字符串,空字符串 string s4(5, 'a'); //s4由连续5个a组成,即s4="aaaaa"; string s5(s1,2,3); //从s1的2位置的字符开始,连续3个字符赋值给s5,即s5="llo"; string s6(s1, 1); //从s1的2位置的字符开始,将后续的所有字符赋值给s6,即s6="ello";
string的读入
当使用C++的cin读入字符串时,程序遇到空白字符就停止读取了。比如程序输入是:
"hello world"
那么当我们使用如下代码时,s1得到的只是"hello"。
string s1; cin>>s1;
如果我们想读取一整行输入,包括空格及空格后面的字符,我们可以使用getline。
string str; getline(cin, str); cout << str << endl;
重载的运算符
此处列举一下被重载的运算符,基本意思一目了然。其中注意“+”操作
s1 = s2; s1 += s2; s1 = s2 + s3; s1 == s2; s1 = "s" + s2; //正确 s1 = "s" + "s"; //错误,加号两边至少要有一个string类型的对象 s1 = "s" + s2 + "s" + "s"; //正确
“+”的两边要保证至少有一个string类型,所以5正确,6错误。由于在C/C++中,+的返回值还是原类型,所以第7行中,"s"+s2返回一个string类型,因此string+“s”也是正确的,以此类推。
遍历string(迭代器)
遍历string中的元素时,我们可以使用类似C中的数组形式访问,如s1[1],也可以使用STL特有的迭代器访问:
string::iterator it; for (it = s1.begin(); it != s1.end(); it++){ cout << *it << endl; } cout << *(s1.begin()); //正确,即访问s1[0] cout << *(s1.end()); //错误,s1.end()指向了空
若想要从后向前遍历string时,可以用到rbegin()和rend()函数。
const_iterator begin()const; iterator begin(); //返回string的起始位置 const_iterator end()const; iterator end(); //返回string的最后一个字符后面的位置 const_iterator rbegin()const; iterator rbegin(); //返回string的最后一个字符的位置 const_iterator rend()const; iterator rend(); //返回string第一个字符位置的前面
插入insert()
string s1 = "hello"; s1.insert(1,"ins"); //从s1的1位置开始,插入"ins"字符串,即s1="hinsello"; s1.insert(1, "ins", 2);//从s1的1位置开始,插入"ins"字符串的前2个字符,即s1="hinello"; s1.insert(1, "ins", 1, 2);//从s1的1位置开始,插入"ins"字符串的从1位置开始的2个字符,即s1="hnsello";
iterator insert(iterator it, char c);//在it处插入字符c,返回插入后迭代器的位置
删除erase()
iterator erase(iterator first, iterator last);//删除[first,last)之间的所有字符,返回删除后迭代器的位置 iterator erase(iterator it);//删除it指向的字符,返回删除后迭代器的位置 string &erase(int pos = 0, int n = npos);//删除pos开始的n个字符,返回修改后的字符串
查找 find()
cout << s.find("aa", 0) << endl; //返回的是子串位置。第二个参数是查找的起始位置,如果找不到,就返回string::npos if (s.find("aa1", 0) == string::npos) { cout << "找不到该子串!" << endl; }
字符串截取 substr()
两个用法:
string str.substr(nStart) //默认 从str字符串nStart位置开始截取到str结束为止
string str.substr(nStart, nLength) // 从str字符串nStart位置开始截取nLength个字符!如果nLength>剩余的字符则截取到str结束为止
举例:
string str("12345asdf");
string strTmp1= str.substr(1); //获得字符串str中 从第1位开始到结束的字符串,strTmp1值为:"2345asdf"
string strTmp2 = str.substr(1,5); //获得字符串s中 从第1位开始的长度为5的字符串,strTmp1值为:"2345a"
内容总结
以上是互联网集市为您收集整理的C++ string 类函数总结(用的非常多,这里单独总结一下)全部内容,希望文章能够帮你解决C++ string 类函数总结(用的非常多,这里单独总结一下)所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。