C++ 命名要求: RegexTraits (自 C++11 起)
来自 cppreference.com
RegexTraits 是一个特征类,它抽象了为给定字符类型作为 std::basic_regex 的模板类型参数时所需的运算。
[编辑] 要求
给定
- CharT,一个字符类型
- X,一个 RegexTraits 类型,用于类型 CharT
- 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 | 返回值
|
v.lookup_classname(F1, F2, b) | X::char_class_type |
|
v.isctype(c, cl) | bool | 返回值:c 是否是 cl 指定的字符类之一的成员。 |
v.value(c, I) | int | 返回值
|
u.imbue(loc) | X::locale_type |
|
v.getloc() | X::locale_type | 返回值:如果存在,则 v 使用的先前区域设置。 |
[edit] 标准库
以下标准库类满足 RegexTraits。
template<> class regex_traits<char>; template<> class regex_traits<wchar_t>; |
(自 C++11 起) (自 C++11 起) |
|