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

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

by 本贾尼 斯特劳斯特鲁普
August 2021
Intermediate to advanced content levelIntermediate 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.
Start your free trial

You might also like

Java并发编程实战

Java并发编程实战

Brian Goetz, Tim Peierls
C++语言导学(原书第2版)

C++语言导学(原书第2版)

本贾尼 斯特劳斯特鲁普
Go程序设计语言

Go程序设计语言

艾伦A. A.多诺万, 布莱恩W. 柯尼汉
可编程网络自动化

可编程网络自动化

Jason Edelman, Scott S. Lowe, Matt Oswalt

Publisher Resources

ISBN: 9787111544395