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的长度如何生成一个子字符串,第二个参数不写就是有多少取多少