C++ string类

STL

STL(standard template libaray-标准模板库):是C++标准库的重要组成部分,不仅是一个可复用的组件库,而且是一个包罗数据结构与算法的软件框架

string类

为什么要学习string类

string其实就是一个字符串的类,但是由于C语言中的字符串中提供了很多函数,这些函数又是和字符串是分不开的,又不太符合面向对象的要求,而且底层需要自己来管理,十分麻烦,所以C++提供的自己的string类

string类的函数

C++的库函数里面也是为string类提供了很多函数,大概有100多个,但是这100多个也不是每一个函数都会经常使用,我们只是挑几个重要的来讲

构造函数和输入输出流重载函数

 上面展现了好几个构造函数,但是只是需要掌握几个函数就行了

下面的几个函数只需要了解就行了

(1)

从一个string类的第pos个位置开始,拷贝npos个元素到另一个string类里面去,如果npos不写或者大于当前要被拷贝的string嘞里面从pos开始,到string类结尾的个数,就拷贝全部

构造n个相同的字符

遍历

遍历方法1

运用这个可以遍历字符串,还可以修改,就像C语言中的数组一样

这两个函数都是返回string类的长度的,这两者是没有区别的,length只是因为沿用C语言而保存下来的,引用了STL之后, 为了兼容,这才又引用了size

遍历方法2 

 

begin()函数是返回string的头一个元素的迭代器,end是返回最后一个元素的下一个元素的一个迭代器类型,至于什么是迭代器,这个阶段就把他想像成为一个指针就可以了

大家一定注意到了刚才上面的begin和end函数了吧,他们两个函数都分别重载了两个函数,前面都加上了const关键字,下面,是他们的使用场景

 

但是问题来了,为什么上面要写成const_iterator,中间要加一个下划线,不直接写成const iterator不加下划线的嘞

原因如下:不加下划线表示iterator类型的变量不能改变,在这里就是it1不能改变,那你还怎么遍历数组,加了下划线表示指向的内容不可以被改变,也就是*it1不能被改变 

遍历方法3

范围for

 其实范围for的底层也是迭代器,是把s1里面的每一个元素取出来,赋值给e,自动++,自动判断是否达到结束条件,这时候对e进行改变是不会改变s1的,比如下面的程序

如果想要改变s1的话,需要在e的前面加上一个&,也就是取一个别名,比如下面的程序

 这时候s1也被改变了

倒叙遍历

rbegin指向的是string的最后一个元素,rend指向的是string的第一个元素 的前一个元素

rebgin++是向前走,也就是向rtend的方向走,下面是他们的使用例子

 关于前面又const的就不用谈了,和前面的一样

插入元素

(了解就行了)

运行结果

 

(了解即可)

在后面插入一个元素

 记住,这个元素只可以插入一个字符,其他的都不行

(下面的这个重点掌握)

这个函数和上面的两个函数实现的功能都是一样的,都是在string的后面插入一个字符串或者一个字符,或者一个string类别的,但是这个方便得多

这个比上面得两个函数简便的多

assign函数(这个函数也不重要)

函数实现的功能可以理解为将原来string里面的内容替换成为别的内容



insert函数

在pos位置插入字符或者字符串 

 

关于string类

string既然是一个类的话,那么这个东西必然又他的成员变量,那他的成员变量有哪些嘞?让我们来看看吧

从上面中发现,string中的成员变量有:

size:元素个数

capacity:该string的容量

一个指针:该指针中有一个_buf数组的东西,当元素个数比较小的时候,元素就是存储在里面的,但是当元素个数比较多的时候,是存在另一个指针里面的

(这里我们在之后的博客中会写到),目前还不知就只需要在VS中是这样,不同的平台是不一样的

删除数据

replace

将下标从5开始的两个字符用ha代替,会看文档就行

STL的算法-sort

第一个参数指向的是第一个元素,第二个参数是最后一个,对与string进行排序的话就是按照字典序来排,也就是我们所说的ASCI码来排

这个函数还可以对任意区间进行排序

好了,以上就是今天的全部内容 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值