文章目录
前言
我们开始学习C++的一个重要部分,C++标准模板库(STL)。
今天,我们就从STL容器——string开始吧
一、string是什么?
string 是STL 中的一种容器,可以用于存储字符串,通过丰富的成员函数可以便捷地对string类对象进行操作。
二、string的使用
1.string类对象的实例化
string类支持构造空对象,传字符字符串构造,传n个字符构造
示例:
string s;
string s('a');
string s("abc");
string s(10,'a');
也支持拷贝其他对象构造
示例:
string s(s1);
还支持赋值运算符
示例:
s = s1;
2.迭代器与遍历
迭代器这一概念贯穿STL的容器,其再用法上类似于指针,可以通过它访问容器中的各个数据,值得注意的是,string的迭代器在底层实现上就是char*
迭代器总体上分为四种:正向迭代器,反向迭代器,const迭代器,反向const迭代器
迭代器示例:
string::iterator it = s.begin();
//begin()的返回值是迭代器类型的,指向容器的首个数据
//end()的返回值是迭代器类型的,指向容器的最后一个数据的下一个
while(it != s1.end())
{
*it -= 1;//通过对迭代器解引用,可以像指针一样更改(非const)迭代器的值
++it; //迭代
}//这样我们就实现了对string类对象的遍历
C++11中,使用范围for也可以实现对string容器的遍历
值得注意的是,范围for本质上也是通过迭代器实现的
示例:
for(auto ch:s1)
{
cout<<ch<<" ";
}
cout<<endl;
string容器支持通过[ ]实现像数组一样的随机访问,其实通过对[]的重载实现的
3.插入删除
可以通过push_back()函数实现尾插一个字符
通过pop_back()实现尾删
示例:
string s;
s.push_back('a');
s.pop_back();
s.push_back('b')
也可以通过append()函数实现尾插一个字符串
示例:
string s;
s.append("abcd");
还可以通过+=操作符的重载实现尾插一个字符或字符串
示例:
string s;
s+='a';
s+="bc";
通过insert()函数实现在指定位置插入一个字符,字符串,其他的string对象
通过erase()函数实现在指定位置删除指定长度的字符
4.其他操作
string函数还有很多其他成员函数:
size(),length()——获得字符串长度
capacity()——获得字符串容量
back()——获得最后一个字符
c_str()——获得c类型的字符串
find(),rfind()——正反找到字符串中指定的字符,并返回对应位置的迭代器
reserve(),resize()——扩充字符串大小(resize可用指定字符初始化新空间)
reverse()——把指定迭代器之间的字符串逆置
..........................