string类和C语言的字符串区别
C语言中,字符串是以’\0’结尾的一些字符的集合,为了操作方便,C标准库中提供了一些str系列的库函数,但是这些库函数与字符串是分离开的,不太符合OOP的思想,而且底层空间需要用户自己管理,稍不留神可能还会越界访问。
string类是C++中表示字符串的字符串类,该类的接口与常规容器的接口基本相同,再添加了一些专门用来操作string的常规操作。通过调用接口来操作string的常规操作。string在底层实际是:basic_string模板类的别名,不能操作多字节或者变长字符的序列。
typedef basic_string<char, char_traits, allocator> string;
因此使用string类比使用字符集合的字符串更方便,底层编译器都已经帮我们实现好了,直接调用即可
string类的常用接口
string类对象的常见构造方法
跟一些常见的类一样,可以拷贝构造,无参构造,传值传参构造。
可以看到以上的构造都是可以成功地创造出string类的对象,我们只需要记住常见的即可,不常见的如果有需求再查文档。
string类对象的容量操作
*size和length
这两个没啥区别,都是返回字符串有效字符长度,不过按照使用C++的使用我个人更喜欢使用size。
看看运行的结果
capacity
看到字面意思就知道是返回空间容量总大小,需要注意的是空间大小不一定等于有效字符长度
*empty
这个就是检测字符串释放为空串,是返回true,否则返回false,还是比较属于比较常见的
*clear
清空有效字符,什么意思呢。假设先有一个对象s1,它里面存的是“hello world”,那这时我调用clear接口就可以将里面的“hello world”清空,再次打印就看不到了。