1.string类的初始化
string s1; //空字符串
string s2(10, '#'); //10个‘#’和\0,在s[10]的位置添加'\0'
string s3("ABC"); //字符串“ABC”
string s4(s3); //与s3内容一样
string s4={'a','b','c'}; //实际存进去的是“abc\0” 在\0后的位置存放的是随机值,不可访问
注意:
以上方式初始化会在字符串末尾自动添加 \0
2.string类的容量
①size()/length() -------------获取string的可访问空间(即0 - s[size])
注意:一般情况下大于s[size]的空间即使存在也不能访问
(但这个并不是由size决定的,当用assign, n, 重新申请权限时,可以访问超过size的成员)
②capacity()------------------------获取当前string的容量
③resize(int n)
- 当前 size < n 时,将s[size]到s[n]全部用'\0'填充
- 当 size > n 时,只将s[size]处改为 '\0'
④resize(n,cha c)
- 当前 size > n 时,将s[size-1]到s[n]全部用字符 c 填充,且在s[size]处写入'\0'
- 当 size < n 时,只将s[size]处改为 '\0'
⑤reserve(n)---------------------改变当前的容量不会填充空间(可能实际空间会比n大)
2.插入操作
⑥s1.swap(s2)--------------交换两个字符串的内容
⑦push_back(char c)----------在string后插入一个字符(参数必须是字符类型)(自动在其后添加\0或者盛申请空间)
⑧append("ABC")--------------在string后添加一个字符串,参数必须是字符串。
insert
①insert(2,3,'A')-------------在string[2]的位置上插入3个字符A
②insert(2,"ABC")--------以string[2]为起点,插入字符串ABC
③insert(2,"ABC",2)--------以string[2]为起点,,插入字符串ABC的前两个字符
④insert(2,"ABCD",2,2)-----以string[2]为起点,插入字符串ABCD的2号下标后的两个字符
3.重置
①str.assign("ABC")----------------重置字符串,并将ABC赋为初值,(实际上是给前三个赋值为ABC,并在其后加上\0)
②str.assign("ABC",2)-------------将ABC的前两个字符assign(“ABC”)操作
③str.assign("ABCDE",2,3)------清空字符串,设置为 "ABC" 中的从 位置2开始,保留 3个 字符(如果该数字大于总的字符串,也仅会在CDE后直接添加一个\0)
④str.assign(5,'A')-----------------重置字符串然后字符串设置为 5个 'A'
4.查找
成功返回位置,失败返回-1
①find('A')--------------------从头找字符A
②find(“ABC”)-----------从头找字符串ABC
③find(‘A’,1)-----------从下表为1的位置开始查找字符1
④find(“ABC”,2)-------从下标位为2的位置开始查找字符串ABC
⑤find(“ABC”,2,1)从位置2处开始查找字符串ABC的前1个字符
rfind:同find,只是将从头找换成从尾巴找
5.提取字符/字符串
①s1=s2.substr(2)--------------用s2的二号下表开始至结束的字符赋值给s1(返回值为string类型)
②s1=s2.substr(2,3)------------从s2中提取3个字符给s1
③const char* s1 = s2.c_str;-将string类型转换为字符串数组给s1(将string类中存储字符串的地址给s1)
注意:采用这种方式返回时,不能修改原字符串,只能使用。
④s1.copy(s2,count,pos)------从s1[pos]位置开始拷贝count个元素到s2中,s2为char*
6.查找字符/字符
string s="hello world!"
find("world") | 在s中查找字符串“world”并返回下标 |
find(‘l’) | 在s中查找第一个遇见的‘ l ’并返回下标 |
rfind(""world) | 从后面开始查找遇见的第一个“world”并返回下标 |
rfind(‘l’) | 从化后面开始查找遇见的第一个‘l’并返回下标 |
反转:7.其他
reserve(str.begain(),str.end());---------------反转字符串