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.3 类facet

一个locale就是一个facet集合。一个facet表示一个特定的文化侧面,例如数值输出时如何表示(num_put),如何从输入读取日期(time_get)以及在文件中如何保存字符(codecvt)。39.4节列出了标准库facet。

用户可以定义新的facet,例如确定季节名如何打印的facet(见39.3.2节)。

facet在程序中表示为std::locale::facet派生类的对象。类似其他locale特性,facet也定义在<locale>中:

类facet设计为无公有函数的基类。其构造函数是protected的,以防止创建“普通facet”对象,其析构函数是virtual的,以确保派生类对象正确销毁。

facet一般通过保存在locale中的指针来管理。传递给facet构造函数一个参数0表示locale应在facet的最后一个引用释放后删除它。反之,非零参数确保locale永远也不会删除facet。在极少数情况下,facet的生命期由程序员直接控制而不是通过locale间接控制,此时非零参数就很有意义了。

每种facet接口都必须有独立的id:

用户使用id为每个提供新facet接口的类定义一个id类型的static成员(例如,见39.4.1节)。locale机制用id标识facet(见39.2节和39.3.1节)。在显而易见的locale实现中,id用作facet指针向量的索引,从而实现高效的map<id,facet*>。 ...

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