String
string容器是比较方便的字符串,相比于c中的char c[10]
一、String构造方法
C++是一种面向对象的编程,String作为一个类因而就有许多的构造方法
构造方法 | 含义 | 举例 | 结果 |
---|---|---|---|
string s | 一个空字符串 | string s | - |
string s=… | 直接初始化一个字符串 | string s1=“123456” | s1=123456 |
string s(str) | 将字符串str 赋值给s | string s2(s1) | s2=123456 |
string s(str,strbegin,strlen) | 将字符串str 的第strbegin位及其之后的strlen位,赋值给s | string s3(s1,1,4) | s3=2345 |
string s(num,c) | num个字符的一个字符串 | string s4(3,‘o’) | s4=ooo |
string s(str,stridx) | 将字符串str 中从下标stridx开始到字符串结束的位置赋值给s | string s5(s1,2) | s5=3456 |
二、String的遍历/访问
1.下标
string的使用可以近似的看成字符串,string s="123456"
,若想访问字符串s
的第二位,即想得到’2’,可使用s[1]
,因为字符串的下标也是从0
开始的。
2.正向迭代器
string::iterator iter = s.begin();
for( ; iter<s.end() ; iter++){
cout<<*iter;
}
3.反向迭代器
string::iterator riter = s.rbegin();
三、String类常见的类方法
- 字符串长度:string.size()
方法函数 | 含义 | 举例 | 结果 |
---|---|---|---|
size() | 返回字符串长度 | s1.size() | 6 |
length() | 返回字符串长度 | s1.length() | 6 |
max_size() | 返回string对象最多包含的字符数,超出会抛出异常 | s.max_size() | - |
capacity() | 返回string对象声明时候的字符数 | string s=“123456”; s=“11”; s.capacity() | 6 |
四、String的拼接
s="123456"
用法 | 举例 | 结果 |
---|---|---|
+= | s+=‘1’ | s=1234561 |
s.push_back()尾部插入 | s.push_back(‘a’) | s=123456a |
append() | s1=s.append(“22”) | s1=12345622 |
s.append(str,num)把字符串前num个字符拼接到s后 | s2=s.append(“345”,2) | s2=12345634 |
s.append(str,strbegin,strlen)把字符串第strbegin位及之后strlen位拼接到s后 | s3=s.append(“3456”,1,2) | s2=12345645 |
s.append(n,c)在s后面拼接n个字符c | s4=s.append(3,‘o’) | s4=123456ooo |
五、String查找与替换
s1="123456"
s1.find(str,pos=0); //查找字符串str第一次出现位置,从pos开始查找
s1.find(s,pos=0,n); //从pos位置查找s的前n个字符第一次位置
s1.find(c,pos=0); //查找字符c第一次出现位置
s1.rfind(str,pos=npos); //从后往前查找str第一次出现位置,从pos(默认最尾部)开始查找
s1.rfind(s,pos=0,n); //从pos查找s的前n个字符最后一次位置
s1.rfind(c,pos=0); //查找字符c最后一次出现位置
s1.replace(pos,n,str); //替换s1的从pos开始n个字符为字符串str
六、String的比较
s1.compare(s2) //从前往后比较,若当前位不同则比较两者的ASCII码,s1当前位大返回1,相同返回0, 否则返回-1
s1="Abcd" s2="aBcd"
用法:
s1.compare(s2)
s1.compare(2,3,s2)
s1.compare(2,3,s2,2,3)
七、String的删除
s1="123456"
erase(iterator p);//删除字符串中p所指的字符
erase(iterator first, iterator last);//删除字符串中迭代器区间[first,last)上所有字符
erase(size_t pos = 0, size_t len = npos);//删除字符串中从索引位置pos开始的len个字符
clear();//删除字符串中所有字符
八、String大小写转换
tolower()
将大写字符转换成小写toupper()
将小写字符转换成大写- STL中的transform
九、String排序
s1="bca"
sort(s.begin(),s.end()); //结果为abc
十、String分割
// strrok(str,split) 以split为分隔符分割str
//示例
char str[] = "I,love,you";
const char *split = ",; !";
char *p2 = strtok(str,split);
while( p2 != NULL ){
cout<<p2<<endl;
p2 = strtok(NULL,split);
}
/*
I
love
you
*/