类模板
<locale>

std::ctype

template <class charT> class ctype;
字符类型属性

ctype 标准属性分类和转换字符,将 C 库头文件 <cctype> 的功能适配到 C++ locale

ctype 类模板有一个受保护的析构函数:程序应该只构造派生类的对象,或者使用安装在 locale 对象中的对象(通过 use_facet)。

所有标准的 locale 对象都支持 ctype 类模板的至少以下属性实例化,作为 ctype 类别的一部分。
locale 对象中的属性描述
ctype<char>窄字符
对于 *用特定实现特化的经典 locale,产生与头文件 <cctype> 中的函数相同的结果(参见下文的特化)。
ctype<wchar_t>宽字符

模板参数

charT
字符类型。
别名为成员 char_type

成员类型

成员类型定义描述
char_type模板参数(charT字符类型
该类还继承了 ctype_base::mask,它作为成员函数的参数和返回类型被广泛使用(参见 ctype_base)。

成员常量

以下成员常量从 ctype_base 继承;它们用于标识字符类别。
成员常量类型描述
spacectype_base::mask未指定(唯一位)空白字符
printctype_base::mask未指定(唯一位)可打印字符
cntrlctype_base::mask未指定(唯一位)控制字符
upperctype_base::mask未指定(唯一位)大写字母
lowerctype_base::mask未指定(唯一位)小写字母
alphactype_base::mask未指定(唯一位)字母字符
digitctype_base::mask未指定(唯一位)十进制数字
punctctype_base::mask未指定(唯一位)标点符号字符
xdigitctype_base::mask未指定(唯一位)十六进制数字
alnumctype_base::maskalpha|digit字母数字字符
graphctype_base::maskalnum|punct具有图形表示的字符
成员常量类型描述
spacectype_base::mask未指定(唯一位)空白字符
printctype_base::mask未指定(唯一位)可打印字符
cntrlctype_base::mask未指定(唯一位)控制字符
upperctype_base::mask未指定(唯一位)大写字母
lowerctype_base::mask未指定(唯一位)小写字母
alphactype_base::mask未指定(唯一位)字母字符
digitctype_base::mask未指定(唯一位)十进制数字
punctctype_base::mask未指定(唯一位)标点符号字符
xdigitctype_base::mask未指定(唯一位)十六进制数字
blankctype_base::mask未指定(唯一位)空白字符
alnumctype_base::maskalpha|digit字母数字字符
graphctype_base::maskalnum|punct具有图形表示的字符
有关 ASCII 字符如何根据这些类别进行分类的详细信息,请参阅 <cctype>

该类还包含一个公共静态常量,类型为 locale::id,它唯一标识具有 ctype 语义的属性。

公开成员函数


字符分类


字符转换


虚保护成员函数

该类定义了虚保护成员,它们通过默认方式实现各自公共成员函数的行为。

以及类析构函数

特化

在所有库实现中,至少提供了该模板的以下特化:
特化
ctype<char>
ctype<wchar_t>

特定特化:ctype<char>

char 特化上,一些成员函数是*内联*实现的,而不是调用它们的 do_ 对应函数(对于成员 isscan_isscan_not 也是如此)。

它有一个不同的构造函数,并维护一个内部的 ctype::mask 类型元素的,其中包含字符集中每个字符的分类:数组中每个元素的值对应于其顺序位置给出的字符的分类。

该表的大小由一个额外的静态公共成员常量指示:
成员常量类型描述
table_sizeconst size_t实现特定(至少 256table 的大小
此特化包含两个额外的 **protected** 成员:
此特化包含两个额外的 **public** 成员:

请注意,do_isdo_scan_isdo_scan_not 不是 char 特化的成员。