string的常用接口,以及接口的含义与作用
前言
string其实就是在堆山new出来的一个字符串数组通过,类包装、迭代器以及算法包装起来的一个容器模板
一、string的构造函数
二、string的运算符以及修改操作接口
1、运算符
在string模板类中,定义了运算符,如==、<、>、>=、<=、+,+=、[]等运算符
对于比较大小来说就是,通过ascII来比较的和c比较字符串的用法是一样的这里是关于c语言字符串比较的文章
那对于+,+=这些运算符来说就是在字符串后面追加内容:
但是尽量少用+因为在底层的operator+是传值,如果大量使用会有很多地方有浅拷贝
假设需要访问一个字符串里面的所有字符,就可以使用[]:
s1.size(),可以返回字符串的长度
2、追加接口
在string中有push_back,append等追加接口:
push_back(),它的作用是在string后追加一个字符
append则是在string后面追加一个字符串
replace(n1,n2,string),把n1到n2位置的字符串用string替换
3、删除接口
有追就肯定有删除,删除就可以用到pop_back()
或者erase(),等删除内容的接口
4、查找接口
c_str(),string的底层有一个char str的成员,这个接口就可以放回这个字符串的地址,这样放回后可以查看到这个字符串*
find(需要查找的字符),find()函数都是是查找到指定的字符返回这个指定字符的下标位置,默认是从前完后找,rfind就是默认从后往前找
5、转换字符串
to_string(),可以将非字符串的值转换成字符串
6、截取字符串到新的字符串
substr(n1,n2),从n1的下标位置开始算到n2的数量个字符串包括n1
三、string管理容量的接口
1、size()
size(),是用来计算字符串长度的接口,计算长度的时候是不计算’/0’的
2、length()
length(),也是用来计算字符串长度的结构,计算长度的时候也是不计算’/0’
3、capacity()
capacity(),是string用来查看底层string数组空间大小的一个接口,同时控制着扩容机制
当字符串的size大小超过了capacity,就会发生扩容
4、reserve()
reserve(size_t n),这个接口的作用是提前给string字符串开好空间 而且这个提起开好的空间很大时比size_t n大的:
如果sizt_t n的值小于capacity一般情况下是不会缩容的。
5、resize()
resize,是改变字符串的有效字符,有效字符那就说明会改变string的size,并且当resize中的size_t n的值大于capacity的时候就会发生扩容,小于capacity并不会缩容即不会改变底层空间的大小
resize(size_t n),这个接口是改变字符串的有效长度,并且将大于capacity之后扩容出来的空间用’0’来初始化
resize(size_t n,char c),这个接口是改变字符串的有效长度,并且将大于capacity之后扩容出来的空间用c来初始化
6、 clear()
clear(),会清理string字符串中的内容,但是不会改变string底层的容量
7、empty()
这个接口就是判断字符串是不是空的一个接口。
四、string类的遍历
1、operator[]
因为operator[]会返回,下标指定的字符,
2、迭代器 (iterator)遍历
迭代器它类似指针,但是对于不同的容器迭代器的呈现方式是不一样的
对于string来说,迭代器就类似于一个指针的东西,因为在string类中有以下三个最基础的成员:
char* str,size_t size;size_t capacity;
而string的迭代器就是返回了str字符串的首元素地址