Skip to Content
C++程序设计语言(第4部分:标准库)(原书第4版)
book

C++程序设计语言(第4部分:标准库)(原书第4版)

by 本贾尼 斯特劳斯特鲁普
August 2021
Intermediate to advanced
450 pages
6h 57m
Chinese
Pearson
Content preview from C++程序设计语言(第4部分:标准库)(原书第4版)

39.1 处理文化差异

一个locale对象表示一组文化偏好,例如,字符串如何比较、人类可读的数值输出格式以及字符在外存中的表示形式。区域设置(locale)的概念是可扩展的,程序员从而可以向一个locale添加新的facet,表示标准库不直接支持的区域相关的实体,如邮政编码和电话号码。locale在标准库中的主要用途是控制输出到ostream的信息的呈现形式以及格式化从istream读取的数据。

本章描述如何使用locale、如何用facet构造locale以及locale如何影响I/O流。

区域设置不只是一个C++概念,大多数操作系统和应用环境都有区域设置的概念。这个概念原则上是系统中所有程序所共享的,而与编写程序的语言无关。因此,我们可以将C++标准库的区域设置概念看作一种标准的、可移植的方法,它令C++程序能访问不同系统中表示形式差异巨大的信息。一个C++locale就是一个系统信息访问接口,这些信息在不同系统上的表示形式是不兼容的。

考虑编写一个会在多个国家使用的程序。编写这种程序的编程风格通常被称为国际化(internationalization,强调程序在多个国家使用)或区域化(localization,强调程序适应区域情况)。程序操纵的很多实体在这些国家中习惯上有不同的表现形式,为处理此问题我们可在编写I/O例程时考虑这方面的因素。例如:

这种编程风格可以实现正确输出,但代码丑陋、不易维护。特别是,我们必须在程序中一致地使用这种风格以确保所有输出都正确调整以适应区域习惯。如果我们希望添加一种新的日期输出格式,就必须修改应用代码。更糟的是,日期输出格式只不过是众多文化差异中的一个例子而已。 ...

Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.

Read now

Unlock full access

More than 5,000 organizations count on O’Reilly

AirBnbBlueOriginElectronic ArtsHomeDepotNasdaqRakutenTata Consultancy Services

QuotationMarkO’Reilly covers everything we've got, with content to help us build a world-class technology community, upgrade the capabilities and competencies of our teams, and improve overall team performance as well as their engagement.
Julian F.
Head of Cybersecurity
QuotationMarkI wanted to learn C and C++, but it didn't click for me until I picked up an O'Reilly book. When I went on the O’Reilly platform, I was astonished to find all the books there, plus live events and sandboxes so you could play around with the technology.
Addison B.
Field Engineer
QuotationMarkI’ve been on the O’Reilly platform for more than eight years. I use a couple of learning platforms, but I'm on O'Reilly more than anybody else. When you're there, you start learning. I'm never disappointed.
Amir M.
Data Platform Tech Lead
QuotationMarkI'm always learning. So when I got on to O'Reilly, I was like a kid in a candy store. There are playlists. There are answers. There's on-demand training. It's worth its weight in gold, in terms of what it allows me to do.
Mark W.
Embedded Software Engineer

You might also like

算法精讲视频课程:24篇系列讲座

算法精讲视频课程:24篇系列讲座

罗伯特·塞奇威克, 凯文·韦恩(Kevin Wayne)
可编程网络自动化

可编程网络自动化

Jason Edelman, Scott S. Lowe, Matt Oswalt
C语言核心技术(原书第2版)

C语言核心技术(原书第2版)

Peter Prinz, Tony Crawford
Go程序设计语言

Go程序设计语言

艾伦A. A.多诺万, 布莱恩W. 柯尼汉

Publisher Resources

ISBN: 9787111544395