命名空间
变体
操作

C++ 命名要求: RegexTraits (自 C++11 起)

来自 cppreference.cn
 
 
C++ 命名要求
 

RegexTraits 是一个特性类,它抽象了给定字符类型在作为 std::basic_regex 的模板类型参数时所需的操作。

[编辑] 要求

给定

  • CharT,一个字符类型
  • X,类型为 CharTRegexTraits 类型
  • 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 一个 CopyConstructible 类型,表示 traits 类使用的区域设置。
X::char_class_type 一个 BitmaskType 类型,表示特定的字符分类。
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) 指定的字符序列转换为 BitmaskType 类型的值,该值随后可以传递给 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
  • 用区域设置 loc 赋予 u
  • 返回:u 先前使用的区域设置(如果有)
v.getloc() X::locale_type 返回:v 先前使用的区域设置(如果有)。


[编辑] 标准库

RegexTraits 由以下标准库类满足

template<> class regex_traits<char>;
template<> class regex_traits<wchar_t>;
(自 C++11 起)
(自 C++11 起)