命名空间
变体
操作

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

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

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 返回值
  • 如果字符序列不是有效的排序元素,则返回空字符串
  • 否则,返回一个字符序列,表示由迭代器范围 [F1, F2) 指定的字符序列组成的排序元素
v.lookup_classname(F1, F2, b) X::char_class_type
  • 将由迭代器范围 [F1, F2) 指定的字符序列转换为 位掩码类型 的值,该值可以随后传递给 isctype
  • lookup_classname 返回的值可以按位或运算;结果值表示属于相应字符类的任一类。
  • 如果 b 为真,则返回的位掩码适合于匹配字符,而不管其大小写。
  • 如果字符序列不是 X 识别的字符类的名称,则返回 0
  • 返回值应独立于序列中字符的大小写。
v.isctype(c, cl) bool 返回值:c 是否是 cl 指定的字符类之一的成员。
v.value(c, I) int 返回值
  • 如果字符 cI 进制中的有效数字,则表示 I 进制中数字 c 的值。
  • -1 否则
u.imbue(loc) X::locale_type
  • 用区域设置 loc 灌注 u
  • 返回值:如果存在,则 u 使用的先前区域设置。
v.getloc() X::locale_type 返回值:如果存在,则 v 使用的先前区域设置。


[edit] 标准库

以下标准库类满足 RegexTraits

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