C++ 命名要求:RegexTraits (自 C++11 起)
RegexTraits 是一个特性类,它抽象了作为 std::basic_regex
的模板类型参数时,给定字符类型所需的操作。
要求
给定
CharT
,一个字符类型X
,一个类型 CharT 的 RegexTraits 类型u
,一个类型 X 的对象v
,一个类型const X
的对象p
,一个类型const CharT*
的值I1
,I2
,输入迭代器F1
,F2
,前向迭代器c
,一个类型const CharT
的值s
,一个类型 X::string_type 的对象cs
,一个类型const X::string_type
的对象b
,一个类型 bool 的值I
,一个类型 int 的值cl
,一个类型X::char_class_type
的对象loc
,一个类型X::locale_type
的对象
表达式 | 返回类型 | 语义 |
---|---|---|
X::char_type | CharT | 用于指代字符类型。 |
X::string_type | std::basic_string<CharT> | |
X::locale_type | 一个 可复制构造的 类型,表示特性类使用的区域设置。 | |
X::char_class_type | 一个 位掩码类型,表示特定的字符分类。 | |
X::length(p) | std::size_t | 返回:最小的 i ,使得 p[i] == 0 。复杂度与 i 成线性关系。 |
v.translate(c) | X::char_type | 返回:一个字符,使得对于任何被认为与 c 等效的字符 d ,都有 v.translate(c) == v.translate(d) 。 |
v.translate_nocase(c) | X::char_type | 返回:一个字符,使得对于任何不区分大小写被认为与 c 等效的字符 C ,都有 v.translate_nocase(c) == v.translate_nocase(C) 。 |
v.transform(F1, F2) | X::string_type | 返回:字符序列 [F1, F2) 的排序键,使得如果字符序列 [G1, G2) 在字符序列 [H1, H2) 之前排序,则 v.transform(G1, G2) < v.transform(H1, H2) 。 |
v.transform_primary(F1, F2) | X::string_type | 返回:字符序列 [F1, F2) 的排序键,使得如果字符序列 [G1, G2) 在字符序列 [H1, H2) 之前排序(不区分大小写),则 v.transform_primary(G1, G2) < v.transform_primary(H1, H2) 。 |
v.lookup_collatename(F1, F2) | X::string_type | 返回 * 如果字符序列不是有效的整理元素,则为空字符串 * 否则为代表由迭代器范围 [F1, F2) 指定的整理元素的字符序列 |
v.lookup_classname(F1, F2, b) | X::char_class_type | * 将迭代器范围 [F1, F2) 指定的字符序列转换为 位掩码类型 的值,该值随后可以传递给 isctype 位掩码类型* 从 lookup_classname 返回的值可以进行按位或运算;结果值表示在相应字符类中的成员资格* 如果 b 为 true,则返回的位掩码适合不区分大小写地匹配字符。* 如果字符序列不是 X 识别的字符类的名称,则返回 0 。* 返回的值应独立于序列中字符的大小写。 |
v.isctype(c, cl) | bool | 返回:c 是否是 cl 指定的字符类之一的成员。 |
v.value(c, I) | int | 返回 * 如果字符 c 是基数 I 中的有效数字,则返回数字 c 在基数 I 中表示的值* 否则为 -1 |
u.imbue(loc) | X::locale_type | * 用 locale loc 浸润 u * 返回: u 之前使用的区域设置(如果有) |
v.getloc() | X::locale_type | 返回:v 之前使用的区域设置(如果有)。 |
标准库
以下标准库类满足 RegexTraits