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

C++中为string为何叫basic_string<char>_第1张图片

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

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

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

C++中为string为何叫basic_string<char>_第2张图片
比如:
C++中为string为何叫basic_string<char>_第3张图片
C++中为string为何叫basic_string<char>_第4张图片
八位二进制最多可以表示的十进制数字范围是,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位也就是两个字节来表示汉字。
C++中为string为何叫basic_string<char>_第5张图片
C++中为string为何叫basic_string<char>_第6张图片
而不同国家的文字都是用字符串来表示,所以就是用的basic_string。来表示多种类型。

你可能感兴趣的:(编程小知识,c++,开发语言,后端)