命名空间
变体
操作

std::ctype<char>::is

来自 cppreference.com
< cpp‎ | locale‎ | ctype char
 
 
 
 
在头文件 <locale> 中定义
bool is( mask m, char c ) const;
(1)
const char* is( const char* low, const char* high, mask* vec ) const;
(2)
1) 检查字符 c 是否根据成员函数 table() 返回的分类表,按掩码 m 分类。实际上计算 table()[(unsigned char)c] & m.
2) 对于字符数组 [lowhigh) 中的每个字符,从成员函数 table() 返回的分类表中读取其完整的分类掩码(即,计算 table()[(unsigned char)*p] 并将其存储在 vec 指向的数组的对应元素中。

如果 (unsigned char)c >= std::ctype<char>::table_size,则使用一个实现定义的值代替 table()[(unsigned char)c],可能对 c 的不同值使用不同的值。

内容

[编辑] 参数

c - 要分类的字符
m - 用于对单个字符进行分类的掩码
low - 指向要分类的字符数组中第一个字符的指针
high - 要分类的字符数组的末尾指针
vec - 指向要填充的掩码数组的第一个元素的指针

[编辑] 返回值

1) 如果 ctable() 中按 m 分类,则为 true,否则为 false.
2) high

[编辑] 注释

与主模板 std::ctype 不同,此特化在对字符进行分类时不会执行虚拟函数调用。为了自定义行为,派生类可以向基类构造函数提供一个非默认的分类表。

[编辑] 示例

[编辑] 缺陷报告

以下更改行为的缺陷报告被追溯应用于之前发布的 C++ 标准。

DR 应用于 发布的行为 正确行为
LWG 28 C++98 重载 (2) 将值从 vec 复制到 table() 中,
与预期行为相反
已更正

[编辑] 另请参阅

[虚拟]
对字符或字符序列进行分类
(std::ctype<CharT> 的虚拟受保护成员函数) [编辑]