Lesson08---string类(2)

1.assign

assign的功能就类似于把string里面原来有的东西清空然后重新赋值

但是重新赋值也可以达到一样的效果感觉没什么用,了解一下就行

 2.insert

 第一个参数是在第几个位置插入,第二个参数是插入的字符串

但是这里不得不吐槽一下这里只能是字符串(双引号)

 这里如果改成了单引号就会报错就很离谱,但是这还不是最离谱的

但是可以这样用,这样它就不会报错但是用0不行

第一个参数是在那个位置插入

第二个参数是插入的个数

第三个参数是插入的字符的个数 

感觉这里的作用就是插入很多重复的字符可以直接用数字来插入

还可以用迭代器插入另一个string类型的一部分

 实际中需求也不高,时间复杂的太高了,谨慎使用

3.erase

erase用三种用法

 这里俩个参数都是缺省

 第一个参数代表从哪里开始删第二个参数代表删多少个

如果俩个都写就代表全部删干净,第二个不写就是从pos开始后面有多少删多少

4.replace

下标,长度和替换成为的字符串

5.max_size() 

max_sizede作用就是把string最大的长度就打印出来,不过用的不多,x64和x86的环境下会有所不同 

实际情况下string开不到这么大的空间 

它开不出这么大的连续空间 

6. sring的扩容规则

初始化的时候capacity给的是15 

 这里的扩容规则很奇怪第一次差不多2倍扩容后面差不多是1.5倍扩容

不同的编译器会不一样是不确定的

同样的代码在linux下又不一样 , 

clang又是这样的

如何扩容c++并没有规定取决于编译器实现

7.reserve

这里vs处理的方式就特别的怪 

 在linux下就是给多少扩列多少

vs是不缩容的

 但linux就又会缩容这里vs编译器有自己的想法,linux就是说干什么就干什么

reserve存在的意义是什么呢?string的底层是char的数组那么string的capacity就要扩容,扩容就要浪费时间,那么我们如果提前知道string的长度那么我们就可以提前开那么就不需要在浪费时间 

但是值得注意的是,没办法直接这样插入,因为string的底层会有一个断言去检查size,这里只是capacity是100但是size依旧是0

 8.resize

如果想用下标直接赋值就要用resize

如果第二个参数不写默认初始化为ascll为0的字符

如果对已经初始化的字符不会清空会在后面继续初始化

如果参数小于size那么就是多余的删掉 9.find 和 rfind

find的功能是返回要找字符的第一个的字符串中的位置ffind就是反着找的

 9.substr

从pos开始取len的长度如何生成一个子字符串,第二个参数不写就是有多少取多少

  • 6
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值