您的位置:首页 > 其它

string类

2019-10-10 22:36 676 查看

STL:c++标准模板库,对常见的数据结构进行封装,包含一些通用类型的算法。

string类:
一、构造(常用四个)
string()
string(const string & str)拷贝
string(const char *)C风格
string(size_t n, char c)单个字符赋值n次

string s1;
string s2;
s1= "hello";
s2 = '!';
string s3;
s3 = s1 + s2;
s3为hello!

二、迭代器(返回值是iterator类型)
1.begin
2.end
定义迭代器时auto it=s.begin();---->对it解引用即s中的元素

三、容器
1.size:计算s中的有效元素的个数--->不算\0
2.resize:改变有效元素个数
①resize(size_t n);
②resize(size_t n,char c);
可以增加或减少size的个数,使用这个函数增加size个数的时候如果超过capacity也会相应的增加capacity的个数,减小时size减小但capacity不变。
3.reserve:改变capacity的大小

reserve(size_t n);若不传参数则不会发生改变,传入的是新容量。

扩容时---->最终容量≥新容量,这是编译器完成扩容的机制,vs下扩容到1.5倍,linux下扩容到2倍。
缩容时---->不改变最终容量直接返回,除非新容量小于15则把最终容量改为15,因为扩容时一个复杂的事情(动态申请空间并维护)所以一般不轻易缩小容量的大小。

reserve的作用:提高代码效率,在已知元素个数的情况下扩容到目标大小,省去重复的空间开辟操作。

四、修改
1.push_back(char c),在字符串后尾加一个字符
2.append()在一个字符串后追加一个字符串
3.+= 追加字符串str
4.c_str() 返回c格式字符串
5.find() 在字符串中查找字符或字符串,也可以定义从第几个位置开始找
6.refind() 反向查找,同find原理

find和rfind找到都会返回位置,找不到返回静态成员变量npos(-1)
7.substr(pos,n)在str中从pos位置开始,截取n个字符,然后将其返回,返回值也是一个string类类型

8.getline()获取一行字符串
getline (cin,name);name是变量名

9.swap()参数是两个类名,进行交换

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: