August 2021
Intermediate to advanced
450 pages
6h 57m
Chinese
一个locale对象表示一组文化偏好,例如,字符串如何比较、人类可读的数值输出格式以及字符在外存中的表示形式。区域设置(locale)的概念是可扩展的,程序员从而可以向一个locale添加新的facet,表示标准库不直接支持的区域相关的实体,如邮政编码和电话号码。locale在标准库中的主要用途是控制输出到ostream的信息的呈现形式以及格式化从istream读取的数据。
本章描述如何使用locale、如何用facet构造locale以及locale如何影响I/O流。
区域设置不只是一个C++概念,大多数操作系统和应用环境都有区域设置的概念。这个概念原则上是系统中所有程序所共享的,而与编写程序的语言无关。因此,我们可以将C++标准库的区域设置概念看作一种标准的、可移植的方法,它令C++程序能访问不同系统中表示形式差异巨大的信息。一个C++locale就是一个系统信息访问接口,这些信息在不同系统上的表示形式是不兼容的。
考虑编写一个会在多个国家使用的程序。编写这种程序的编程风格通常被称为国际化(internationalization,强调程序在多个国家使用)或区域化(localization,强调程序适应区域情况)。程序操纵的很多实体在这些国家中习惯上有不同的表现形式,为处理此问题我们可在编写I/O例程时考虑这方面的因素。例如:
这种编程风格可以实现正确输出,但代码丑陋、不易维护。特别是,我们必须在程序中一致地使用这种风格以确保所有输出都正确调整以适应区域习惯。如果我们希望添加一种新的日期输出格式,就必须修改应用代码。更糟的是,日期输出格式只不过是众多文化差异中的一个例子而已。 ...
Read now
Unlock full access