1. 简介
C语言中通过字符相连已经基本创造出了字符串的常规操作,然而,字符串在C语言中并不是常规类型,而是一个类似于数组的结构,在C++中,通过模板类的操作创建了string类,这样的方法更适合于现代的操作编程。
2. 头文件&命名空间
1 | #include<string> //头文件 |
注意不是<string.h>也不是<cstring>,前者为C文件中的头文件,后者为C++中调用的C文件。
1 | using namespace std; //命名空间 |
string来自于std命名空间,常用的绝大多数操作均来自这个空间,string也不例外。
3. 初始化
与第五章的STL内容十分相近,两者的创建方法基本完全相等,这里直接使用代码举例,不多做缀数。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | #include<iostream> #include<string> using namespace std; int main(){ string str; //创建空字符串 string str1 = "Hello Dotcpp.com" ; cout<<str1<<endl; //Hello Dotcpp.com string str2(str1); cout<<str2<<endl; //Hello Dotcpp.com string str3(str1,6); cout<<str3<<endl; //Dotcpp.com string str4(str1,6,6); cout<<str4<<endl; //Dotcpp string str5(5, 'D' ); cout<<str5<<endl; //DDDDD string str6(str1.begin(),str1.end()); cout<<str6<<endl; //Hello Dotcpp.com return 0; } |
4. 比较与连接操作操作
对于比较类型的操作,可以使用 ==,>,<,>=,<=与!=进行比较字符串,对于链接操作而言,可以直接使用符号+进行直接的操作符连接
比较:对于C语言的字符串操作而言,我们通过使用strcmp函数进行比较,通过这个函数的返回值判断两字符串的大小情况,这样的比较方式确实已经满足了很多功能,但是还不如我们常规的思路,C++中利用符号重载的思路重构了比较方法,直接通过str1==str2的以及相关的方式进行比较,这比较符合我们大多数情况的人类思维,如:
1 2 3 4 5 6 | string str1 = "Hello" ; string str2 = "Hello" ; if (str1==str2) cout<< "两者相等" <<endl; else cout<< "两者不相等" <<endl; |
对于字符串的连接操作,对于C语言而言需要使用字符串连接函数,同理,C++使用符号重载直接让我们通过‘+’号完成操作,这也更符合我们的思维,避免了麻烦。
1 2 | string totalystring = "a" ; cout<<totalystring+ "b" + "c" + "d" <<endl; |
5. 常用操作(节选)
a) 获取长度length
获取当前字符串的长度,这与C中的strlen(str)一致。
1 | str.length(); |
b)获取大小size
获取当前字符串的大小,某种意义上由于字符串的每一个字符开辟的空间均完全相等,因此size可以代替length
1 | str.size(); |
c) 判断是否为空empty
返回一个布尔类型,判断字符串是否为空empty。
1 | str.empty(); |
d) 填充内容resize
原型为void resize(int len,char chr)把字符串当前大小置为len,多去少补,多出的字符chr填充不足的部分,resize将会修改该字符串的占用空间。
1 2 3 | string str = "HEllo" ; str.resize(8, 'K' ); cout<<str<<endl; |
输出
HElloKKK
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程