C++ | string详解

1、string是什么


        string是STL文档的容器之一,是一个自定义类型,是一个类,由类模板basic_string实例化出来的一个类;

 类模板basic_string实例化出来了四个类,如下图所示;

        实例化出的这四个类不同的是他们的编码方式,分别为 char、char16_t、char32_t、wchar_t 这四种;这里提出了一个新的概念,编码;那么什么是编码呢?其实早在我们学习C语言时,我们就接触过编码;没错,就是ASCII(美国信息交换标准代码);以下来自百度百科;

        什么意思呢,在我们的计算机中,所有的数据只能够以01二进制编码的方式储存,ASCII就是将日常使用的一些符号数字字母收集起来;用数字一一对应表示;而随着计算机的发展,ASCII并不够满足各国的语言,只能针对于英语;因此,为了更好的传播计算机,出现了各种编码;Unicode(万国码)就是其中的一个代表;

        由于各国语言的差异,可能存在一个字节不能够一一对应文字的情况,不像英文由26个英文字母组成单词,只需保存26个字母即可,而实际上许多国家的语言并不能由一字节的空间能表示出来,因此由不同储存方式繁衍出了 UTF-8、UTF-16、UTF-32,其中数字代码比特位;其中上述 basic_string 实例化出的类储存方式如下:

char          ---  1字节

char16_t   ---   2字节

char32_t   ---   4字节

wchar_t    ---   2字节

总结:上述知识需要有几个基本的了解,我们需记住string是basic_string实例出来的一个类,其类型为一个字节的char;

2、string的使用(部分)

1)构造函数

        在C++98中,string的构造函数一种有如下7种:

  其中提一下第三种,pos为子串的位置,len子串的长度,若len大于从子串pos位置开始后面字符总数,则表示初始化到子串结尾即可,比如我们要用 “hello world” 初始化字符串,若pos为6,len为20,则用world初始化字符串s1;len还有一个缺省值npos,其数值为无符号整型的-1,也就是无符号的最大值(无符号无负数);

(2)赋值重载

赋值重载使string能够用=对string对象重新赋值,string的赋值重载一共有有如下三种;

3)容量相关接口

         以下为string类容量相关接口,其中最后一个为缩容接口,由于性能原因,使用的并不多;

(4) 迭代器

         迭代器是STL库中的一个特殊的存在,我们可以通过迭代器对string类中的字符进行增删查改; 在string类中,我们可将其视为指针;string类中的迭代器接口有如下几种;

begin函数返回的是字符串中第一个字符的位置的迭代器,而end函数返回的字符串中最后一个字符的下一个位置的迭代器; 因此遍历一个string类,有一下三种方法;

   rbegin与rend系列为反向迭代器;rbegin返回的是最后一个字符的位置的迭代器,rend返回的是第一个字符的前一个位置的迭代器;

 我们可以通过反向迭代器,对其逆向遍历;反向迭代器的类型为 string::reverse_iterator;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值