C++中为string为何叫basic_string<char>

在这里插入图片描述

//假设下面是basic_string类的定义(不用关系它定义是否完整),
//那么就有一个疑问?
//难道字符串的还有不同的类型吗?需要使用模版
template <class T>
class basic_string
{
private:
	T* _str;
	//...
};

这里就需要了解一下编码:

编码的由来
计算机只能计算和识别二进制,必须让计算机识别文字,才能和计算机进行交互,彼此也才能通过计算机通信。
由此,有了ASCII编码的诞生,它起始于50年代后期,在1967年定案,是最初美国国家标准,供不同计算机在相互通信时用作共同遵守的西文字符编码标准

在这里插入图片描述
比如:
在这里插入图片描述
在这里插入图片描述
八位二进制最多可以表示的十进制数字范围是,0000 0000 ~ 1111 1111 = 0 ~ 255 ,一共256个不同数字。

ASCII编码就是将常用的英文字符和符号,与256个数字逐一对应起来形成的对应表。

由于计算机是美国人发明的,因此,最早只有127个字母被编码到计算机里,也就是大小写英文字母、数字和一些符号,这个编码表被称为ASCII编码;

后来又扩展了128个,称为扩展ASCII码。

这样我们输入字符,计算机转换成十进制,再转换成二进制,就可以通过计算机计算或传输。

因为当时计算机是美国发明的,ASCII码表发明出来就只适用于他们那些学习英文的人。但是计算机想要流行起来,就必须有提供一套全世界文字的编码表,于是就产生了Unicode。

Unicode(Universal Coded Character Set)出现了,它对世界上大部分的文字系统进行了整理、编码,使得计算机能够以更简单的方式来呈现和处理字符,它的目的就是为所有的字符提供统一的编码,任何的平台、系统、设备、应用或者语言都能兼容且无风险使用。
Unicode又包含utf-8,utf-16,utf-32。

对于我们国家来说,很显然我们的文字那就太多了,8位很显然才能表示256个汉字,肯定不够,那么就可以使用16位也就是两个字节来表示汉字。
在这里插入图片描述
在这里插入图片描述
而不同国家的文字都是用字符串来表示,所以就是用的basic_string。来表示多种类型。

  • 6
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小唐学渣

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值