本文主要是介绍C++中通用字符名与Unicode,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
C++中通用字符名与Unicode
C++实现支持一个基本的源字符集,即可用来编写源代码的字符集。它由标准美国键盘上的字符(大写和小写)和数字、C语言中使用的符号(如和=)以及其他一些字符(如换行符和空格)组成。还有一个基本的执行字符集,它包括在程序执行期间可处理的字符(如可从文件中读取或显示到屏幕上的字符)。它增加了一些字符,如退格和振铃。C++标准还允许实现提供扩展源字符集和扩展执行字符集。另外,那些被作为字母的额外字符也可用于标识符名称中。也就是说,德国实现可能允许使用日耳曼语的元音变音,而法国实现则允许使用重元音。C++有一种表示这种特殊字符的机制,它独立于任何特定的键盘,使用的是通用字符名(universal character name)。
通用字符名的用法类似于转义序列。通用字符名可以以u或\U打头。w后面是8个十六进制位,\U后面则是16个十六进制位。这些位表示的是字符的ISO10646码点(ISO10646是一种正在制定的国际标准,为大量的字符提供了数值编码,请参见本章后面的“Unicode 和ISO10646”)。
如果所用的实现支持扩展字符,则可以在标识符(如字符常量)和字符串中使用通用字符名。例如,请看下面的代码:
int k\u00F6rper;
cout << "Let them eat g\u00E2teau.\n";
6的ISO 10646 码点为 00F6,而à的码点为 00E2。因此,上述 C++代码将变量名设置为körper,并显示下面的输出:
Let them eat gÃteau.
如果系统不支持ISO10646,它将显示其他字符或gu00E2teau,而不是a。实际上,从易读性的角度看,在变量名中使用\u00F6没有多大意义,但如果实现的扩展源字符集包含它可能允许您从键盘输入该字符。0,
请注意,C++使用术语“通用编码名”,而不是“通用编码”,这是因为应将\u00F6 解释为“Unicode码点为 U-00F6的字符”。支持 Unicode 的编译器知道,这表示字符ǒ,但无需使用内部编码 00F6。无论计算机使用是ASCII还是其他编码系统,都可在内部表示字符T;同样,在不同的系统中,将使用不同的编码来表示字符6。在源代码中,可使用适用于所有系统的通用编码名,而编译器将根据当前系统使用合适的内部编码来表示它。
Unicode和IS0 10646
Unicode 提供了一种表示各种字符集的解决方案–为大量字符和符号提供标准数值编码,并根据类型将它们分组。例如,ASCII码为 Unicode 的子集,因此在这两种系统中,美国的拉丁字符(如A和Z)的表示相同。然而,Unicode 还包含其他拉丁字符,如欧洲语言使用的拉丁字符、来自其他语言(如希腊语、西里尔语、希伯来语、切罗基语、阿拉伯语、泰语和孟加拉语)中的字符以及象形文字(如中国和日本的文字)。到目前为止,Unicode 可以表示 109000多种符号和 90多个手写符号(script),它还在不断发展中。
Unicode 给每个字符指定一个编号–码点。Unicode 码点通常类似于下面这样:U-222B。其中U表示这是一个 Unicode 字符,而 222B 是该字符(积分正弦符号)的十六进制编号。
国际标准化组织(ISO)建立了一个工作组,专门开发ISO10646–这也是一个对多种语言文本进行编码的标准。ISO10646 小组和 Unicode 小组从 1991年开始合作,以确保他们的标准同步。
对C++感兴趣的朋友点这里:C/C++课程
这篇关于C++中通用字符名与Unicode的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!