C++ STL之string初始

在这里插入图片描述

  • 我最近开了几个专栏,诚信互三!
    ====> |||《算法专栏》::刷题教程来自网站《代码随想录》。|||
    ====> |||《C++专栏》::记录我学习C++的经历,看完你一定会有收获。|||
    ====> |||《Linux专栏》::记录我学习Linux的经历,看完你一定会有收获。|||
    ====> |||《C#专栏》::记录我复习C#的经历,深度理解查漏补缺,不定期更新。|||

STL介绍

STL(标准模板库),自C++11后引进,该库中含有各种常见数据结构,算法…模板。
在这里插入图片描述

它们的存在使得我们编写C++程序的效率更高,STL并非是C++祖师爷开发,大多数都由一些个人,公司等,其中有各种版本,我们主要以P.J.版和SGL版为例。

string类

std::string ------ typedef basic_string< char > string;

string类就是一个字符串和各种函数包装成了一个类,string类的出现其实比STL早,随后被归于了STL中。

数据成员

string中较为重要的数据成员有

char str[]
int capacity
int size

成员函数

构造函数

string有多个构造函数。
在这里插入图片描述
其中(1),(2),(4)需要较为常用,需要记住,(3)函数的作用如图。
在这里插入图片描述

如图所示,pos是从某个字符开始,而len则是长度了,该构造函数的作用就是从下标为pos的字符开始的后len个字符拷贝给一个对象。
len有一个缺省值,npos,该值是一个静态成员变量,static size_t npos = -1该值是一个很大的值,是为了不论字符长度多大,只要缺省len,则将从pos开始的字符全都拷贝
在这里插入图片描述

容量和大小

在这里插入图片描述
其中最重要的是,size,resize,capacity,reserve
size和length的作用都一样,计算串的大小,不包含’\0’,存在2个作用相同的函数的原因就是string的出现比STL早,但最后被归于STL,而语言又只能向前更新。
在这里插入图片描述
capacity函数用来计算当前字符数组的容量,要注意的是,容量capacity和大小size是不同的,size及该串有多少个有效字符,而capacity则代表该串有多少个空间,所以size < capacity
在这里插入图片描述
resize,reserve,resize用来重新设置串的大小,reserve用来设置串的容量。
在这里插入图片描述

此处reserve后,容量比30大的原因是因为vs下对string扩容会有内存对齐,在Linux下使用该函数就不会存在该问题。

resize的使用会影响到capacity。
在这里插入图片描述
resize函数的用处不在于此
在这里插入图片描述
在这里插入图片描述

若resize后大小大于原大小,则在其余空间处部字符c。

访问

在这里插入图片描述
访问主要了解operator[],at
这2个函数除了在越界访问时进行的警告不同,其他几乎一样,在C语言中,检查越界是抽查式,而C++的访问函数解决了这个问题,只要越界,必会报错。
在这里插入图片描述

修改

在这里插入图片描述
关于修改的函数主要了解operator+=,insert,erase
operator+=可以在一个string类型的后面追加字符串/字符,这是一个十分常用的函数。
在这里插入图片描述
insert 可以在某个位置插入某些字符/串在这里插入图片描述
在这里插入图片描述
erase可以对串的某个范围/使用迭代器迭代,进行删除。
在这里插入图片描述
在这里插入图片描述

迭代器初识

迭代器是各种可迭代类型中的一个成员,迭代器可以帮助我们完成对此种类型的遍历。

声明一个迭代器(以string为例)
在这里插入图片描述
普通迭代器和const迭代器的区别是普通迭代器可以修改迭代器所指向的内容,而const迭代器无法修改其所指向的内容。

与迭代器有关的函数如图。
在这里插入图片描述
这些函数其实就2中类型,(begin end) (rbegin rend),c开头的成员函数其实就是返回const迭代器,这些函数可以在某些时候增加代码可读性,如图。

在这里插入图片描述
begin,end begin函数返回可迭代类型最开始的起始位置,是闭区间,end返回终止位置,是开区间[begin,end)
rbegin,rend则是逆置的意思,及rbegin = end,rend = begin,依旧是左闭右开[rbegin,rend)
在这里插入图片描述

字符串操作

在这里插入图片描述

find函数可以查找字符/字符串,并返回首字符的下标,若没找到,则返回npos。
find有以下重载在这里插入图片描述

substr函数可以返回字符串[0,len]的一部分。
在这里插入图片描述

在这里插入图片描述

c_str函数可以将一个string类转换为字符数组
在这里插入图片描述
在这里插入图片描述

  • 15
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值