- 引言: 为什么要有string类型, 就使用字符数组表示字符串不行吗?
- 原因: 使用字符数组描述文本信息, 无法确定开多大空间, 开多了浪费,开少了不够用
- 使用string封装:
- 扩容机制:减少了空间的浪费
- 各种接口:方便修改等操作
string的使用
- 容量相关
- size:获取字符个数,不包含\0 (C语言规定字符串以\0结尾,C++通过size知道其结束位置)
- capacity:获取容量
- reserve: 扩容, 不改变size,不会缩容
- resize: 扩容, 改变size,不会缩容 + 可以指定字符初始化
- 运算符重载
- string常用 +, +=
- string对象可以支持>, < ,==,的比较
- []
- 其它
- find: 查找指定的字符,(npos: -1, 表示未找到的情况)
- substr:裁剪字符串
- replace:替换指定的字符
- to_string:数字转字符
- stoi:字符串转数字
- iostream
- cin>> : 遇到' '或'\n'就停止
- getline: 遇到'\n'停止
- 重载>>:定义一个buffer往buff中写(1)当满了就写进s(2)读到' '或'\n'且buff中有数据就写进s.这样可用减少频繁的扩容,减少空间的浪费
string的简单实现
默认成员函数: 拷贝构造与赋值--对构造函数的复用 + 利用对象管理资源
string的访问: [], 迭代器, c_str
string的容量: reserve, resize等 -- size,capacity的修改
string的修改: 增删改查 -- 对容量的检查, 数据的挪动, str函数的复用
运算符重载: str函数的复用
代码: String