39.4 标准facet

在<locale>中,标准库提供了以下facet:

细节将在参考章节中介绍。

当实例化上表列出的facet时,C必须是一个字符类型(见36.1节)。标准库已为char和w_char定义了这些facet。此外,ctype<C>还保证支持char16_t和char32_t。如果用户需要使用标准I/O处理其他字符类型X,就必须依赖具体C++实现特有的facet特例化版本或自己提供适合X的facet版本。例如,为了控制X和char之间的转换,可能需要codecvt<X,char,mbstate_t>(见39.4.6节)。

International可能为true或false;true表示使用三字符(再加上结尾符0)的“国际”货币符号表示(见39.4.3.1节),例如USD和BRL。

移位状态参数SS用来表示多字节字符表示中的移位状态(见39.4.6节)。在<cwchar>中定义了mbstate_t,表示可能发生在具体C++实现定义的多字节字符编码规则集合中的任何转换状态。对任意字符类型X,与mbstate_t对应的是char_traits<X>::state_type(见36.2.2节)。

In和Out分别是输入迭代器和输出迭代器(见33.1.2节和33.1.4节)。给定带这些模板参数的_put和_get,就允许程序员提供访问非标准库缓冲区的facet(见39.4.2.2节)。与iostream关联的缓冲区是流缓冲区,因此为其提供的迭代器是ostreambuf_iterator(见38.6.3节和39.4.2.2节)。从而,函数failed()可用于错误处理(见38.6.3节)。 ...

Get C++程序设计语言(第4部分:标准库)(原书第4版) now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.