1.string类
还记得我们数据结构学的串吗,现在在c++中,我们有了c++提供的标准库,它是一个写好的类,非常方便使用
1. string是表示字符串的字符串类
2. 该类的接口与常规容器的接口基本相同,再添加了一些专门用来操作string的常规操作。
3. string在底层实际是:basic_string模板类的别名,typedef basic_string<char, char_traits, allocator>
string;
4. 不能操作多字节或者变长字符的序列。
在使用string类时,必须包含#include头文件以及using namespace std;
2.string的常见接口说明
void Test()
{
string s1;
//string s2("hello ss");
string s2="hello ss";//涉及隐式类型转换
string s3(s2);
//
string s4(s2, 1, 5);//从pos位置开始拷贝len长度
string s5(s2, 2);
string s6(s2, 4);
string s7(5, '8');
cout << s1 << endl;
cout << s2 << endl;
cout << s3 << endl;
cout << s4 << endl;
cout << s5 << endl;
cout << s6 << endl;
cout << s7 << endl;
}
我们简单应用一下,这就是string的简单应用,
接着我们说一下,string的遍历,一共有三种方式
第一种用的是类似于数组的[],在c++中进行了重载操作符。
const string s = "wanglina";
for (size_t i = 0; i < s.length(); i++)
{
cout << s[i] << " ";
}
第二种 迭代器,这个方法适合于所有的结构的遍历,栈,队列等等
string::const_iterator ss = s.begin();
while (ss != s.end())//这里要用地址比较,如果比较字符,会出现越界访问,并且可能提前结束
{
cout << *ss << " ";
ss++;
}
第三种 for遍历
for (auto e: s)
{
cout << e << " ";
}
运行结果都是一样的;
我们这里这个迭代器的写法,可以用auto直接让编译器进行推算,但是我们学习要知道它的本质是什么
细心的观众已经发现,我有的写了const 有的string没写const,这是基于c++string的在迭代器实现分为有const和没有const两种,在使用的时候,调用哪个方便就调用哪个
iterator 可读可改
const_iterator 只读 相当于指针里的const int* 不能修改迭代器指向的内容,但是类似地址可以改否则没法遍历
const iterator 相当于int const *
3.利用算法库里的帮助我们实现sort功能
string s1 = "hello wanglina";
sort(s1.begin(),s1.end());
cout << s1 << endl;
太方便了是不是,记得引用算法头文件 algorithm
4在string后面一次性尾插多个字符
在c++运算符重载里面,+=成了尾插的选择,非常方便使用