目录
一、capacity
1)size()、length()和capacity()
2) resize()和reserve()
二、element access
1)at ()
2)back()
3)front()
三、modifiers
1)operator+=
2)append ()
3)assign()
4)insert()
5)erase()
一、capacity
1)size()、length()和capacity()
size()和length()都是返回的字符串的长度,没有区别,所算的长度不包括\0。
而capacity()计算的是分配给该字符串的内存空间,这个空间是没有包含\0的,也就是说计算的比实际空间少一个,还有一个是预留给\0的。
2) resize()和reserve()
resiez()和reserve()的作用都是扩容,但是二者又有所区别。
resize()既会影响size又会影响capacity,而reserve只会影响capacity。
注意:当传入的参数比当前capacity小时,vs中reserve()是不会缩容的。
可以看到,最后size和capacity都发生了变化。
对于参数中给了字符的,如果新的大小大于当前大小,新加入的元素会以默认构造的方式进行初始化。没有给的,就是用\0初始化。
接下来看看reserve():
可以看到,size并没有改变 。
需要注意的是,在vs上扩容,可能最后结果并不是我们预期的那样,例如上面这个例子,我们期望是扩容到20,但是实际上扩容到了32(算上\0),不同的编译器扩容后的结果可能不一样,有的编译器可能就是按照你给的数据来扩容的。
二、element access
在上一篇博客中已经提到了用下标+[ ]来获取对于元素,这里就不讲了。
1)at ()
at()函数 接受一个位置索引作为参数,然后返回该位置的字符。
2)back()
用于访问字符串中的最后一个字符,同时也可以修改这个字符。
3)front()
类似的,front()就是获取第一个字符。
三、modifiers
1)operator+=
这个就比较形象了,直接在后边追加,可以是一个字符,也可以是字符串。
2)append ()
append()用于将一个字符串追加到另一个字符串的末尾,有6种,可根据需要选择追加方式。
3)assign()
assign()用于替换字符串的内容。
4)insert()
这里就演示其中一个:
在下标为3前插入字符串“xxx”。
5)erase()
这里只演示一下第一个,从下标为3的位置开始删除,删除2个。