C++字符串完全指引之一 —— Win32 字符编码
原著:
翻译:
原文出处::
引言
毫无疑问,我们都看到过像 !等各种各样的字符串类型,还有那些以 "
开头的奇怪的宏。你也许正在盯着显示器发愁。本指引将总结引进各种字符类型的目的,展示一些简单的用
法,并告诉您在必要时,如何实现各种字符串类型之间的转换。
在第一部分,我们将介绍 # 种字符编码类型。了解各种编码模式的工作方式是很重要的事情。即使你已
经知道一个字符串是一个字符数组,你也应该阅读本部分。一旦你了解了这些,你将对各种字符串类型之间
的关系有一个清楚地了解。
在第二部分,我们将单独讲述 类,怎样使用它及实现他们相互之间的转换。
字符基础 -- ASCII, DBCS, Unicode
所有的 类都是以 $% 字符串为基础的。$%字符串是字符数组。所以我们先介绍字符类
型。这里有 # 种编码模式对应 # 种字符类型。第一种编码类型是单子节字符集($&%
!)。在这种编码模式下,所有的字符都只用一个字节表示。 是 !。一个字节表示的 '
用来标志 ! 字符串的结束。
第二种编码模式是多字节字符集($&%!)。一个 ! 编码包含一
些一个字节长的字符,而另一些字符大于一个字节的长度。用在 () 里的 ! 包含两种字符类型,
单字节字符($&%)和双字节字符(&$&%)。由于 ()
里使用的多字节字符绝大部分是两个字节长,所以 ! 常被用 ! 代替。
在 ! 编码模式中,一些特定的值被保留用来表明他们是双字节字符的一部分。例如,在 *$+ 编
码中(一个常用的日文编码模式),',-.$',/* 之间和 ','$,* 之间的值表示0这是一个双字节字符,下
一个子节是这个字符的一部分。0这样的值被称作0&%0他们都大于 ',1*。跟随在一个
&% 子节后面的字节被称作0&%0。在 ! 中,&% 可以是任意非 ' 值。像 ! 一
样,! 字符串的结束标志也是一个单字节表示的 '。
第三种编码模式是 2。2 是一种所有的字符都使用两个字节编码的编码模式。2
字符有时也被称作宽字符,因为它比单子节字符宽(使用了更多的存储空间)。注意,2 不能被看作
!。! 的独特之处在于它的字符使用不同长度的字节编码。2 字符串使用两个字节表示的 '
作为它的结束标志。
单字节字符包含拉丁文字母表, 及 标准和 3 操作系统定义的图形字
符。双字节字符被用来表示东亚及中东的语言。2 被用在 3 及 ()4 操作系统内部。
你一定已经很熟悉单字节字符。当你使用 时,你处理的是单字节字符。双字节字符也用 类型
来进行操作(这是我们将会看到的关于双子节字符的很多奇怪的地方之一)。2 字符用 )" 来表
示。2 字符和字符串常量用前缀 5 来表示。例如:
)")6577.77899:&%',''#.
)";)<6500899.:&%=)
字符在内存中是怎样存储的