C语言中多字节右移程序怎么写,什么是C语言中的宽字符与多字节字符

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

C语⾔中多字节右移程序怎么写,什么是C语⾔中的宽字符与多
字节字符
C语⾔原本是在英⽂环境中设计的,主要的字符集是7位的ASCII码,8位的byte(字节)是最常见的字符编码单位。

但是国际化软件必须能够表⽰不同的字符,⽽这些字符数量庞⼤,⽆法使⽤⼀个字节编码。

C95标准化了两种表⽰⼤型字符集的⽅法:宽字符(wide character,该字符集内每个字符使⽤相同的位长)以及多字节字符(multibyte character,每个字符可以是⼀到多个字节不等,⽽某个字节序列的字符值由字符串或流(stream)所在的环境背景决定)。

⾃从1994年的增补之后,C语⾔不只提供char类型,还提供wchar_t类型(宽字符),此类型定义在stddef.h 头⽂件中。

wchar_t指定的宽字节类型⾜以表⽰某个实现版本扩展字符集的任何元素。

在多字节字符集中,每个字符的编码宽度都不等,可以是⼀个字节,也可以是多个字节。

源代码字符集和运⾏字符集都可能包含多字节字符。

多字节字符可以被⽤于字符的常量、字符串字⾯值(string literal)、标识符(identifier)、注释(comment),以及头⽂件。

C语⾔本⾝并没有定义或指定任何编码集合,或任何字符集(基本源代码字符集和基本运⾏字符集除外),⽽是由其实现指定如何编码宽字符,以及要⽀持什么类型的多字节字符编码机制。

虽然C标准没有⽀持Unicode字符集,但是许多实现版本使⽤Unicode转换格式UTF-16和UTF-32来处理宽字符。

如果遵循Unicode标准,wchar_t类型⾄少是16或32位长,⽽wchar_t类型的⼀个值就代表⼀个Unicode字符。

UTF-8是⼀个由Unicode Consortium(万国码联盟)定义的实现,可以表⽰Unicode字符集的所有字符。

UTF-8字符所使⽤的空间⼤⼩从⼀个字节到四个字节都有可能。

多字节字符和宽字符(也就是wchar_t)的主要差异在于宽字符占⽤的字节数⽬都⼀样,⽽多字节字符的字节数⽬不等,这样的表⽰⽅式使得多字节字符串⽐宽字符串更难处理。

⽐⽅说,即使字符'A'可以⽤⼀个字节来表⽰,但是要在多字节的字符串中找到此字符,就不能使⽤简单的字节⽐对,因为即使在某个位置找到相符合的字节,此字节也不见得是⼀个字符,它可能是另⼀个不同字符的⼀部分。

然⽽,多字节字符相当适合⽤来将⽂字存储成⽂件。

C提供了⼀些标准函数,可以将多字节字符转换为wchar_t,或将宽字符转换为多字节字符。

⽐⽅说,如果C 编译器使⽤Unicode 标准的UTF-16 和UTF-8,那么下⾯调⽤wctomb()函数就可以获得字符的多字节表⽰⽅式(注:wctomb = wide character to multibyte)。

相关文档
最新文档