std:: ctype_byname
|
定义于头文件
<locale>
|
||
|
template
<
class
CharT
>
class ctype_byname : public std:: ctype < CharT > ; |
||
std::ctype_byname
是一个
std::ctype
区域设置 facet,它封装了在构造时指定的区域设置的字符分类规则。
目录 |
特化
标准库保证提供以下特化版本:
|
定义于头文件
<locale>
|
|
| std :: ctype_byname < char > | 提供窄字符分类(使用查表法进行字符分类) |
| std :: ctype_byname < wchar_t > | 提供宽字符分类 |
嵌套类型
| 类型 | 定义 |
mask
|
typename std:: ctype < CharT > :: mask |
成员函数
|
(constructor)
|
构造新的
ctype_byname
facet
(公开成员函数) |
|
(destructor)
|
销毁
ctype_byname
facet
(受保护成员函数) |
std::ctype_byname:: ctype_byname
|
explicit
ctype_byname
(
const
char
*
name,
std::
size_t
refs
=
0
)
;
|
||
|
explicit
ctype_byname
(
const
std::
string
&
name,
std::
size_t
refs
=
0
)
;
|
(since C++11) | |
构造一个具有指定名称
name
的区域设置的
std::ctype_byname
平面。
refs 用于资源管理:若 refs == 0 ,当最后一个持有该平面的 std::locale 对象被销毁时,实现将销毁该平面。否则,该对象不会被销毁。
参数
| name | - | 区域设置的名称 |
| refs | - | 链接到该平面的引用数量 |
std::ctype_byname:: ~ctype_byname
|
protected
:
~ctype_byname ( ) ; |
||
销毁该facet。
继承自
std::
ctype
<CharT>
(仅当
CharT
不是
char
时)
嵌套类型
| 类型 | 定义 |
char_type
|
CharT
|
数据成员
| 成员 | 描述 |
std::locale::id
id
[static]
|
facet 的标识符 |
成员函数
调用
do_is
(
std::ctype<CharT>
的公开成员函数)
|
|
调用
do_scan_is
(
std::ctype<CharT>
的公开成员函数)
|
|
调用
do_scan_not
(
std::ctype<CharT>
的公开成员函数)
|
|
调用
do_toupper
(
std::ctype<CharT>
的公开成员函数)
|
|
调用
do_tolower
(
std::ctype<CharT>
的公开成员函数)
|
|
调用
do_widen
(
std::ctype<CharT>
的公开成员函数)
|
|
调用
do_narrow
(
std::ctype<CharT>
的公开成员函数)
|
受保护成员函数
|
[virtual]
|
将字符或字符序列转换为大写
(
std::ctype<CharT>
的虚受保护成员函数)
|
|
[virtual]
|
将字符或字符序列转换为小写
(
std::ctype<CharT>
的虚受保护成员函数)
|
|
[virtual]
|
将字符或字符序列从
char
转换为
CharT
(
std::ctype<CharT>
的虚受保护成员函数)
|
|
[virtual]
|
将字符或字符序列从
CharT
转换为
char
(
std::ctype<CharT>
的虚受保护成员函数)
|
|
[virtual]
|
对字符或字符序列进行分类
(
std::ctype<CharT>
的虚受保护成员函数)
|
|
[virtual]
|
定位序列中符合给定分类的首个字符
(
std::ctype<CharT>
的虚受保护成员函数)
|
|
[virtual]
|
定位序列中不符合给定分类的首个字符
(
std::ctype<CharT>
的虚受保护成员函数)
|
继承自
std::
ctype<char>
(仅当
CharT
为
char
时)
嵌套类型
| 类型 | 定义 |
char_type
|
char |
数据成员
| 成员 | 描述 |
std::locale::id
id
[static]
|
facet 的标识符 |
const
std::
size_t
table_size
[static]
|
分类表的大小,至少为 256 |
成员函数
|
获取字符分类表
(
std::ctype
<char>
的公开成员函数)
|
|
|
[static]
|
获取 "C" 区域设置的字符分类表
(
std::ctype
<char>
的公开静态成员函数)
|
|
使用分类表对字符或字符序列进行分类
(
std::ctype
<char>
的公开成员函数)
|
|
|
使用分类表定位序列中符合给定分类的第一个字符
(
std::ctype
<char>
的公开成员函数)
|
|
|
使用分类表定位序列中不符合给定分类的第一个字符
(
std::ctype
<char>
的公开成员函数)
|
|
调用
do_toupper
(
std::ctype<CharT>
的公开成员函数)
|
|
调用
do_tolower
(
std::ctype<CharT>
的公开成员函数)
|
|
调用
do_widen
(
std::ctype<CharT>
的公开成员函数)
|
|
调用
do_narrow
(
std::ctype<CharT>
的公开成员函数)
|
受保护成员函数
|
[virtual]
|
将一个或多个字符转换为大写
(
std::ctype<CharT>
的虚受保护成员函数)
|
|
[virtual]
|
将一个或多个字符转换为小写
(
std::ctype<CharT>
的虚受保护成员函数)
|
|
[virtual]
|
将一个或多个字符从
char
转换为
CharT
(
std::ctype<CharT>
的虚受保护成员函数)
|
|
[virtual]
|
将一个或多个字符从
CharT
转换为
char
(
std::ctype<CharT>
的虚受保护成员函数)
|
继承自 std:: ctype_base
嵌套类型
| 类型 | 定义 |
mask
|
未指定的 BitmaskType 类型(枚举、整数类型或位集) |
成员常量
|
space
[static]
|
标识空白字符分类的
mask
值
(公开静态成员常量) |
|
print
[static]
|
标识可打印字符分类的
mask
值
(公开静态成员常量) |
|
cntrl
[static]
|
标识控制字符分类的
mask
值
(公开静态成员常量) |
|
upper
[static]
|
标识大写字符分类的
mask
值
(公开静态成员常量) |
|
lower
[static]
|
标识小写字符分类的
mask
值
(公开静态成员常量) |
|
alpha
[static]
|
标识字母字符分类的
mask
值
(公开静态成员常量) |
|
digit
[static]
|
标识数字字符分类的
mask
值
(公开静态成员常量) |
|
punct
[static]
|
标识标点字符分类的
mask
值
(公开静态成员常量) |
|
xdigit
[static]
|
标识十六进制数字字符分类的
mask
值
(公开静态成员常量) |
|
blank
[static]
(C++11)
|
标识空白字符分类的
mask
值
(公开静态成员常量) |
|
alnum
[static]
|
alpha
|
digit
(公开静态成员常量) |
|
graph
[static]
|
alnum
|
punct
(公开静态成员常量) |
注释
std :: ctype_byname < char > 在 <locale> 的概要说明中被错误地声明为显式特化,该声明已通过 LWG 问题 1298 的决议被移除,但它仍然是必需的特化,正如 std :: ctype_byname < wchar_t > 一样。
示例
#include <iostream> #include <locale> int main() { wchar_t c = L'\u00de'; // 大写字母 thorn std::locale loc("C"); std::cout << "isupper('Þ', C locale) returned " << std::boolalpha << std::isupper(c, loc) << '\n'; loc = std::locale(loc, new std::ctype_byname<wchar_t>("en_US.utf8")); std::cout << "isupper('Þ', C locale with Unicode ctype) returned " << std::boolalpha << std::isupper(c, loc) << '\n'; }
输出:
isupper('Þ', C locale) returned false
isupper('Þ', C locale with Unicode ctype) returned true
缺陷报告
以下行为变更缺陷报告被追溯应用于先前发布的C++标准。
| 缺陷报告 | 适用标准 | 发布时行为 | 正确行为 |
|---|---|---|---|
| LWG 16 | C++98 |
显式特化
std
::
ctype_byname
<
char
>
错误指定了
do_narrow
的名称和参数列表
|
已修正 |
| LWG 616 | C++98 |
typename
消歧符在
mask
的定义中缺失
|
已添加 |
参见
|
定义字符分类表
(类模板) |
|
|
std::ctype
针对
char
类型的特化
(类模板特化) |