首页 理论教育 国际化库详解:C++标准程序库的国际化机制解析

国际化库详解:C++标准程序库的国际化机制解析

时间:2023-10-25 理论教育 版权反馈
【摘要】:随着C++语言在全球的推广和普及,国际化日渐成为软件开发的重要议题。为适应国际化潮流,C++标准程序库提供了编写国际化程序代码支持机制。Dietmar Kuhi是C++标准程序库有关I/O和国际化方面的专家,国际化的内容大部分是由其负责的。对于上述两个问题,C++标准程序库均提供了相关解决方案。国际化问题的主要思路是以locale对象代表可扩充的facet集合,以此实现地区转换工作。国际化机制的相关类是最近几年才引入C++标准中的。

国际化库详解:C++标准程序库的国际化机制解析

随着C++语言在全球的推广和普及,国际化日渐成为软件开发的重要议题。为适应国际化潮流,C++标准程序库提供了编写国际化程序代码支持机制。支持机制主要影响I/O的使用和字符串的处理。这是本章的重点内容。Dietmar Kuhi是C++标准程序库有关I/O和国际化方面的专家,国际化的内容大部分是由其负责的。

C++标准程序库面对“区域”的转换问题,除着眼于某些特定转换外,还提供了一个普通方案。例如,为支持16位亚洲字符,该普通方案不限定字符型别。对于程序国际化而言,以下两个方面非常重要:

1)不同的字符集具有不同的性质。面对字符数多于256个的字符集,char型别显然是不够用的。

2)使用者希望程序能够针对国家和文化传统的差异进行必要转化(例如日期、格式、货币书写格式、布尔值表示法等)。

对于上述两个问题,C++标准程序库均提供了相关解决方案。(www.xing528.com)

其实,所谓国际化问题最根本的莫过于各种问题的本地化。顾名思义,区域表示通常是在全世界不同区域具有不同的信息表达方式,对于不同文化背景的计算机用户,需要使用不同的信息显示方式。例如各个国家的日期显示格式是不同的。即使在使用同一种国际语言的国家之间,信息的表达方式仍然存在较大差异。程序开发者如果试图在全球范围推广其软件产品,必须意识到不同区域的差异。

国际化问题的主要思路是以locale对象代表可扩充的facet集合,以此实现地区转换工作。Locale在C语言中已经有所应用,在C++标准中国际化问题被更加泛型化(通用化),其设计形式更有弹性。事实上,C++的locale机制可以根据用户环境或偏好进行各种专用自定义设制。例如,可以对其进行扩展,使其处理度量衡系统、时区、纸张规格等问题。

大部分国际化相关机制仅需程序员付出最低程度的努力,根本不需要任何额外付出。程序员使用locale对象直接进行格式化、校勘、字符分类等工作。但C++标准程序库所支持的某些方面并没为其自身所用,程序员必须手工调用相应函数才能运用之。C++标准程序库中没有任何stream函数可以用来格式化时间、日期或货币表达式。最突出的代表就是strings和streams使用了国际化机制的另一个概念:字符特性。二者均定义出能够把不同字符集区分开来的某些基本特性和操作。国际化机制的相关类是最近几年才引入C++标准中的。尽管整体方案极其灵活,但要真正达到完善还需要做一些工作。例如字符串校勘函数直接使用型别const char的迭代器。另外,charT代表某种字符型别,尽管basic_string<charT>通常会使用此型别作为迭代器型别,但未进行任何的明文保证。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈