首页 理论教育 区域表示和混合区域表示:简明地解析C++STL

区域表示和混合区域表示:简明地解析C++STL

时间:2023-10-25 理论教育 版权反馈
【摘要】:第四种与第三种类似,不同之处在于它的第二个参数是区域表示代码字符串localeCode,指明facet的所属区域。表12-6区域表示代码(续)例12-2给出了创建和使用区域表示的过程,目的是按英语、法语、德语的格式显示日期。通过把一个区域表示的facet修改成另一个区域表示的相应facet,可以创建混合区域表示。例12-3例12-3的执行结果为:本例在调用locale类的构造函数时,新建的locale对象是法语区域表示,但该对象的时间facet被替换为美国版。

区域表示和混合区域表示:简明地解析C++STL

由于默认区域表示不能修改,因此要根据需要创建区域的表示对象。std::locale类提供了如下4种创建区域表示对象的方法:

978-7-111-51399-5-Chapter12-23.jpg

第一种根据全局区域表示创建一个locale对象。第二种根据localeCode指明的区域表示代码字符串来创建locale对象。第三种根据名为locale1的locale对象创建一个副本,并用locale2对象中cat指明的facet代替locale1的facet。第四种与第三种类似,不同之处在于它的第二个参数是区域表示代码字符串localeCode,指明facet的所属区域。区域表示代码详见表12-6。

12-6区域表示代码

978-7-111-51399-5-Chapter12-24.jpg

(续)

978-7-111-51399-5-Chapter12-25.jpg

例12-2给出了创建和使用区域表示的过程,目的是按英语法语德语的格式显示日期。此例的功能是:当程序调用仅有一个空字符串实参的locale构造函数时,返回的locale对象根据系统的用户设置被设置为本地区域表示。用户通常可以通过设置系统变量(LANG)来设置本地区域表示。

例12-2

978-7-111-51399-5-Chapter12-26.jpg

例12-2的执行结果为:

978-7-111-51399-5-Chapter12-27.jpg

978-7-111-51399-5-Chapter12-28.jpg(www.xing528.com)

在上述代码中,代码行“std::locale native("");”是值得仔细体会的。

通过把一个区域表示的facet修改成另一个区域表示的相应facet,可以创建混合区域表示。

例12-3

978-7-111-51399-5-Chapter12-29.jpg

例12-3的执行结果为:

978-7-111-51399-5-Chapter12-30.jpg

本例在调用locale类的构造函数时,新建的locale对象是法语区域表示,但该对象的时间facet被替换为美国版。导致该区域表示的日期具有美国英语格式,其他facet仍支持法语格式。LC_TIME是变量。区域表示的种类值见表12-7。

12-7 区域表示的种类值

978-7-111-51399-5-Chapter12-31.jpg

(续)

978-7-111-51399-5-Chapter12-32.jpg

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

我要反馈