在《字符集与字符编码》一文中,我们讲解了各种常用的字符编码。按照编码后字符所占用的字节数可以将字符编码分为三类:
- 单字节编码: 一个码元占一个字节,一个字符由一个码元组成,如:ASCII、EASCII、ISO-8859-N。
- 多字节编码: 一个码元占一个字节,一个字符由一个或多个码元组成,如:Big5(1、2字节)、GB2312(1、2字节)、GBK(1、2字节)、GB18030(1、2、4字节)、UTF-8(1、2、3、4字节)。
- 宽字节编码: 一个码元占两个或四个字节,一个字符由一个或两个码元组成,如:UTF-16(2、4字节)、UTF-32(4字节)。
在C++中,内置的基本数据类型中表示字符的有两种:char
、wchar_t
。
char
叫多字节字符,对应上面的单字节编码和多字节编码;wchar_t
被称为宽字符,对应上面的宽字节编码。
1. char与string
1.1. 测试源代码
void char_string()
{
// char字符
std::cout << "char size: " << sizeof(char) << std::endl;