为什么学习string类?
C语言中,字符串是以’\0’结尾的一些字符的集合,为了操作方便,C标准库中提供了一些str系列的库函数,但是这些库函数与字符串是分离开的,不太符合OOP的思想,而且底层空间需要用户自己管理,稍不留神可能还会越界访问,而C++string能自动管理自己的空间,很好的解决了以上的问题。
目录
- 库string的使用
- string的实现
string的使用
string成员函数的使用
常用的构造函数(constructor)
析构函数(destructor)
重载函数operator=
string迭代器的使用
从下图可以看出string迭代器可分为四类
string其他接口的介绍
string的实现
string的成员变量
string成员函数的实现
构造函数(constructor)的实现
问:为什么不在栈里开空间存储string呢?
- char* _str = const char* str权限放大会报错
- 不能扩大缩小_str的栈空间
operator=函数的实现
拷贝构造函数的实现
析构函数的实现
问:为什么都用memcpy,而不用strcpy?
string的字符串里面的字符可能存’\0’,而strcpy是遇到’\0’就结束,会使代码拷贝不彻底
string迭代器的实现
其他接口的实现
push_back append函数实现
reserve size capacity empty函数实现
resize函数实现
insert函数实现
erase函数实现
find函数实现
实现运算符函数重载
实现< <= > >= == != 函数重载
实现+=函数重载
实现<< >>函数重载