设为首页 加入收藏

TOP

Unicode简介(九)
2010-12-30 21:07:57 】 浏览:18617
Tags:Unicode 简介
档案有助於极大地减少档案所占的磁碟空间。)但也许最糟的缺点是:人们相对来说还不习惯使用Unicode。身为程式写作者,这就是我们的工作。

宽字元和C
 

对C程式写作者来说,16位元字元的想法的确让人扫兴。一个char和一个位元组同宽是最不能确定的事情之一。没几个程式写作者清楚ANSI/ISO 9899-1990,这是「美国国家标准程式设计语言-C」(也称作「ANSI C」)通过一个称作「宽字元」的概念来支援用多个位元组代表一字元的字元集。这些宽字元与常用的字元完美地共存。

ANSI C也支援多位元组字元集,例如中文、日文和韩文版本Windows支援的字元集。然而,这些多位元组字元集被当成单位元组构成的字串看待,只不过其中一些字元改变了後续字元的含义而已。多位元组字元集主要影响C语言程式执行时期程式库函式。相比之下,宽字元比正常字元宽,而且会引起一些编译问题。

宽字元不需要是Unicode。Unicode是一种可能的宽字元集。然而,因为本书的焦点是Windows而不是C执行的理论,所以我将把宽字元和Unicode作为同义语。

char资料型态
 

假定我们都非常熟悉在C程式中使用char资料型态来定义和储存字元跟字串。但为了便於理解C如何处理宽字元,让我们先回顾一下可能在Win32程式中出现的标准字元定义。

下面的语句定义并初始化了一个只包含一个字元的变数:

char c = 'A' ;

变数c需要1个位元组来保存,并将用十六进位数0x41初始化,这是字母A的ASCII代码。

您可以像这样定义一个指向字串的指标:

char * p ;

因为Windows是一个32位元作业系统,所以指标变数p需要用4个位元组保存。您还可初始化一个指向字串的指标:

char * p = "Hello!" ;

像前面一样,变数p也需要用4个位元组保存。该字串保存在静态记忆体中并占用7个位元组-6个位元组保存字串,另1个位元组保存终止符号0。

您还可以像这样定义字元阵列:

char a[10] ;

在这种情况下,编译器为该阵列保留了10个位元组的储存空间。运算式sizeof(a) 将返回10。如果阵列是整体变数(即在所有函式外定义),您可使用像下面的语句来初始化一个字元阵列:

char a[] = "Hello!" ;

如果您将该阵列定义为一个函式的区域变数,则必须将它定义为一个stat

首页 上一页 6 7 8 9 10 11 12 下一页 尾页 9/21/21
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇视窗和讯息 下一篇没有了

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目