- 一、多字节字符(multibyte)
- 二、宽字符(Wide-Character)
- 三、使用范围
- 四、wchar_t
- 五、字符转换
- 六、源文件字符集、运行字符集
- 定义:字符所用的字节个数是可变的,一个1字节字符后面可以跟着一个3字节字符。(比如中国象形文字)
备注:也有人称多字节字符为窄字符。但是《c++标准程序库》中称为多字节字符,我们沿用书中多字节的说法。
二、宽字符(Wide-Character)- 定义:字符所用的字节数(byte)恒定,与所表示的字符无关。
- 典型的个数是2或4个字节。
- 这和只使用1字节的表示法(例如ASCII),没有区别。
备注:也有文章中说,ASCII即无所谓宽字节和多字节。
三、使用范围- 多字节字符表示法比宽字符更紧凑,因此,多字节字符表示法常用来在程序外部存储数据;
- 宽字符表示法比较容易处理固定大小的字符,所以通常在程序内部使用。
ISO C++使用wchar_t表示宽字符,在c++中wchar_t已被扶正为关键词。
五、字符转换Class template codecvt用来在不同的字符编码方案之间进行转换
备注:未来再写
这个区分的文章不是太多,但是我们要明白。
- 源文件字符集:源文件存储采用的字符集。
(eg.cpp文件的存储。如果按照《c++标准程序库》中多字节字符和宽字节字符的建议,源文件字符集应该采用多字节字符表示法较合理) - 运行字符集:程序运行过程中采用的字符集。
(程序运行过程数据的输出等。如果按照《c++标准程序库》中多字节字符和宽字节字符的建议,运行字符集应该采用宽字符表示法较合理)
这个简要再多说2点,后面博客会详细介绍
- 1、vs2017等建立的源文件采用的是Unicode字符集,utf-8的编码。后面文章给大家介绍。
- 2、一般来说,源文件字符集和运行字符集一般是一致的。(当然你也可以设置为不同的)



