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++课程

相关推荐
CSDN_RTKLIB20 分钟前
【四个场景测试】源文件编码UTF-8 BOM
c++
肉包_5111 小时前
两个数据库互锁,用全局变量互锁会偶发软件卡死
开发语言·数据库·c++
Trouvaille ~2 小时前
【Linux】UDP Socket编程实战(一):Echo Server从零到一
linux·运维·服务器·网络·c++·websocket·udp
HellowAmy2 小时前
我的C++规范 - 线程池
开发语言·c++·代码规范
czy87874752 小时前
const 在 C/C++ 中的全面用法(C/C++ 差异+核心场景+实战示例)
c语言·开发语言·c++
十五年专注C++开发2 小时前
MinHook:Windows 平台下轻量级、高性能的钩子库
c++·windows·钩子技术·minhook
一只小小的芙厨3 小时前
寒假集训笔记·树上背包
c++·笔记·算法·动态规划
以卿a3 小时前
C++(继承)
开发语言·c++·算法
czxyvX4 小时前
017-AVL树(C++实现)
开发语言·数据结构·c++
你真是饿了4 小时前
1.C++入门基础
开发语言·c++