169 lines
20 KiB
HTML
169 lines
20 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="zh" dir="ltr" class="client-nojs" xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh">
|
|
<head><meta http-equiv="x-ua-compatible" content="ie=edge">
|
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
|
<title>C++ 具名要求:正则表达式特征 (RegexTraits)</title>
|
|
<link rel="stylesheet" href="ext.css" />
|
|
<link rel="stylesheet" href="site_modules.css" />
|
|
</head>
|
|
<body class="mediawiki ltr sitedir-ltr ns-0 ns-subject page-cpp_named_req_RegexTraits skin-cppreference2 action-view cpp-navbar">
|
|
<div id="cpp-content-base">
|
|
<div id="content"><a id="top"></a>
|
|
<h1 id="firstHeading" class="firstHeading"><span style="font-size:0.7em; line-height:130%">C++ 具名要求:</span><span style="font-style:italic">正则表达式特征</span> <span style="font-family: Georgia, 'DejaVu Serif', serif; font-style:italic">(RegexTraits)</span></h1>
|
|
<div id="bodyContent">
|
|
<div id="contentSub"><span class="subpages">< <a href="cpp.html">cpp</a>‎ | <a href="cpp-named_req.html">named req</a></span></div>
|
|
<div id="mw-content-text" lang="zh" dir="ltr" class="mw-content-ltr" xml:lang="zh">
|
|
<p><strong class="selflink"><span style="font-style:italic">正则表达式特征</span> <span style="font-family: Georgia, 'DejaVu Serif', serif; font-style:italic">(RegexTraits)</span></strong> 是特性类,它在用作 <span class="t-c"><span class="mw-geshi cpp source-cpp"><a href="cpp-regex-basic_regex.html"><span class="kw1999">std::<span class="me2">basic_regex</span></span></a></span></span> 的模板类型形参时,对给定字符类型抽象所需的操作。</p>
|
|
<h3><span class="mw-headline" id=".E8.A6.81.E6.B1.82">要求</span></h3>
|
|
<p>给定</p>
|
|
<ul>
|
|
<li><span class="t-c"><span class="mw-geshi cpp source-cpp">CharT</span></span> ,字符类型</li>
|
|
<li><span class="t-c"><span class="mw-geshi cpp source-cpp">X</span></span> , <span class="t-c"><span class="mw-geshi cpp source-cpp">CharT</span></span> 类型的正则表达式特性 (<span style="font-style:italic">正则表达式特征</span> <span style="font-family: Georgia, 'DejaVu Serif', serif; font-style:italic">(RegexTraits)</span> ) 类型</li>
|
|
<li><span class="t-c"><span class="mw-geshi cpp source-cpp">u</span></span> , <span class="t-c"><span class="mw-geshi cpp source-cpp">X</span></span> 类型对象</li>
|
|
<li><span class="t-c"><span class="mw-geshi cpp source-cpp">v</span></span> , <span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="kw4">const</span> X</span></span> 类型对象</li>
|
|
<li><span class="t-c"><span class="mw-geshi cpp source-cpp">p</span></span> , <span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="kw4">const</span> CharT<span class="sy2">*</span></span></span> 类型值</li>
|
|
<li><span class="t-c"><span class="mw-geshi cpp source-cpp">I1, I2</span></span> ,输入迭代器</li>
|
|
<li><span class="t-c"><span class="mw-geshi cpp source-cpp">F1, F2</span></span> ,向前迭代器</li>
|
|
<li><span class="t-c"><span class="mw-geshi cpp source-cpp">c</span></span> , <span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="kw4">const</span> CharT</span></span> 类型值</li>
|
|
<li><span class="t-c"><span class="mw-geshi cpp source-cpp">s</span></span> , <span class="t-c"><span class="mw-geshi cpp source-cpp">X<span class="sy4">::</span><span class="me2">string_type</span></span></span> 类型对象</li>
|
|
<li><span class="t-c"><span class="mw-geshi cpp source-cpp">cs</span></span> , <span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="kw4">const</span> X<span class="sy4">::</span><span class="me2">string_type</span></span></span> 类型对象</li>
|
|
<li><span class="t-c"><span class="mw-geshi cpp source-cpp">b</span></span> , <span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="kw4">bool</span></span></span> 类型值</li>
|
|
<li><span class="t-c"><span class="mw-geshi cpp source-cpp">I</span></span> , <span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="kw4">int</span></span></span> 类型值</li>
|
|
<li><span class="t-c"><span class="mw-geshi cpp source-cpp">cl</span></span> , <span class="t-c"><span class="mw-geshi cpp source-cpp">X<span class="sy4">::</span><span class="me2">char_class_type</span></span></span> 类型对象</li>
|
|
<li><span class="t-c"><span class="mw-geshi cpp source-cpp">loc</span></span> , <span class="t-c"><span class="mw-geshi cpp source-cpp">X<span class="sy4">::</span><span class="me2">locale_type</span></span></span> 类型对象</li>
|
|
</ul>
|
|
<p><br /></p>
|
|
<table class="wikitable">
|
|
<tr>
|
|
<th>表达式</th>
|
|
<th>返回类型</th>
|
|
<th>语义</th>
|
|
</tr>
|
|
<tr>
|
|
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">X<span class="sy4">::</span><span class="me2">char_type</span></span></span></td>
|
|
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">CharT</span></span></td>
|
|
<td>用于指代字符类型</td>
|
|
</tr>
|
|
<tr>
|
|
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">X<span class="sy4">::</span><span class="me2">string_type</span></span></span></td>
|
|
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><a href="cpp-string-basic_string.html"><span class="kw1228">std::<span class="me2">basic_string</span></span></a><span class="sy1"><</span>CharT<span class="sy1">></span></span></span></td>
|
|
<td></td>
|
|
</tr>
|
|
<tr>
|
|
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">X<span class="sy4">::</span><span class="me2">locale_type</span></span></span></td>
|
|
<td></td>
|
|
<td>表示特性类所用本地环境的<a href="cpp-named_req-CopyConstructible.html"><span style="font-style:italic">可复制构造</span> <span style="font-family: Georgia, 'DejaVu Serif', serif; font-style:italic">(CopyConstructible)</span></a> 类型。</td>
|
|
</tr>
|
|
<tr>
|
|
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">X<span class="sy4">::</span><span class="me2">char_class_type</span></span></span></td>
|
|
<td></td>
|
|
<td>表示特定字符分类的<a href="cpp-named_req-BitmaskType.html"><span style="font-style:italic">位掩码类型</span> <span style="font-family: Georgia, 'DejaVu Serif', serif; font-style:italic">(BitmaskType)</span></a> 。</td>
|
|
</tr>
|
|
<tr>
|
|
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">X<span class="sy4">::</span><span class="me2">length</span><span class="br0">(</span>p<span class="br0">)</span></span></span></td>
|
|
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><a href="cpp-types-size_t.html"><span class="kw100">std::<span class="me2">size_t</span></span></a></span></span></td>
|
|
<td>返回满足 <span class="t-c"><span class="mw-geshi cpp source-cpp">p<span class="br0">[</span>i<span class="br0">]</span> <span class="sy1">==</span> <span class="nu0">0</span></span></span> 的最小 <span class="t-c"><span class="mw-geshi cpp source-cpp">i</span></span> 。复杂度与 <span class="t-c"><span class="mw-geshi cpp source-cpp">i</span></span> 成线性。</td>
|
|
</tr>
|
|
<tr>
|
|
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">v.<span class="me1">translate</span><span class="br0">(</span>c<span class="br0">)</span></span></span></td>
|
|
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">X<span class="sy4">::</span><span class="me2">char_type</span></span></span></td>
|
|
<td>返回一个字符,使得对于任何被认为等价于 <span class="t-c"><span class="mw-geshi cpp source-cpp">c</span></span> 的字符 <span class="t-c"><span class="mw-geshi cpp source-cpp">d</span></span> ,有 <span class="t-c"><span class="mw-geshi cpp source-cpp">v.<span class="me1">translate</span><span class="br0">(</span>c<span class="br0">)</span> <span class="sy1">==</span> v.<span class="me1">translate</span><span class="br0">(</span>d<span class="br0">)</span></span></span> 。</td>
|
|
</tr>
|
|
<tr>
|
|
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">v.<span class="me1">translate_nocase</span><span class="br0">(</span>c<span class="br0">)</span></span></span></td>
|
|
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">X<span class="sy4">::</span><span class="me2">char_type</span></span></span></td>
|
|
<td>返回一个字符,使得对于任何被认为忽略大小写就等价于 <span class="t-c"><span class="mw-geshi cpp source-cpp">c</span></span> 的字符 <span class="t-c"><span class="mw-geshi cpp source-cpp">C</span></span> ,有 <span class="t-c"><span class="mw-geshi cpp source-cpp">v.<span class="me1">translate_nocase</span><span class="br0">(</span>c<span class="br0">)</span> <span class="sy1">==</span> v.<span class="me1">translate_nocase</span><span class="br0">(</span>C<span class="br0">)</span></span></span> 。</td>
|
|
</tr>
|
|
<tr>
|
|
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">v.<span class="me1">transform</span><span class="br0">(</span>F1, F2<span class="br0">)</span></span></span></td>
|
|
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">X<span class="sy4">::</span><span class="me2">string_type</span></span></span></td>
|
|
<td>返回:迭代器范围 <span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="br0">[</span>F1, F2<span class="br0">)</span></span></span> 所指代的字符序列的排序关键,使得若字符序列 <span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="br0">[</span>G1, G2<span class="br0">)</span></span></span> 排序于字符序列 <span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="br0">[</span>H1, H2<span class="br0">)</span></span></span> 前,则 <span class="t-c"><span class="mw-geshi cpp source-cpp">v.<span class="me1">transform</span><span class="br0">(</span>G1, G2<span class="br0">)</span> <span class="sy1"><</span> v.<span class="me1">transform</span><span class="br0">(</span>H1, H2<span class="br0">)</span></span></span> 。</td>
|
|
</tr>
|
|
<tr>
|
|
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">v.<span class="me1">transform_primary</span><span class="br0">(</span>F1, F2<span class="br0">)</span></span></span></td>
|
|
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">X<span class="sy4">::</span><span class="me2">string_type</span></span></span></td>
|
|
<td>返回迭代器范围 <span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="br0">[</span>F1, F2<span class="br0">)</span></span></span> 所指代的排序关键,使得若字符序列 <span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="br0">[</span>G1, G2<span class="br0">)</span></span></span> 在忽略大小写的情况下排序于字符序列 <span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="br0">[</span>H1, H2<span class="br0">)</span></span></span> 前,则 <span class="t-c"><span class="mw-geshi cpp source-cpp">v.<span class="me1">transform_primary</span><span class="br0">(</span>G1, G2<span class="br0">)</span> <span class="sy1"><</span> v.<span class="me1">transform_primary</span><span class="br0">(</span>H1, H2<span class="br0">)</span></span></span> 。</td>
|
|
</tr>
|
|
<tr>
|
|
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">v.<span class="me1">lookup_collatename</span><span class="br0">(</span>F1, F2<span class="br0">)</span></span></span></td>
|
|
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">X<span class="sy4">::</span><span class="me2">string_type</span></span></span></td>
|
|
<td>返回:
|
|
<ul>
|
|
<li>空字符串,若字符序列不是合法的对照元素</li>
|
|
<li>否则为字符序列,表示由迭代器范围 <span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="br0">[</span>F1, F2<span class="br0">)</span></span></span> 所指带的字符序列组成的对照元素</li>
|
|
</ul>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">v.<span class="me1">lookup_classname</span><span class="br0">(</span>F1, F2, b<span class="br0">)</span></span></span></td>
|
|
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">X<span class="sy4">::</span><span class="me2">char_class_type</span></span></span></td>
|
|
<td>
|
|
<ul>
|
|
<li>转换迭代器范围所指代的字符序列 <span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="br0">[</span>F1, F2<span class="br0">)</span></span></span> 为之后能传递给 <span class="t-c"><span class="mw-geshi cpp source-cpp">isctype</span></span> 的<a href="cpp-named_req-BitmaskType.html"><span style="font-style:italic">位掩码类型</span> <span style="font-family: Georgia, 'DejaVu Serif', serif; font-style:italic">(BitmaskType)</span></a> 值</li>
|
|
<li>能将从 <span class="t-c"><span class="mw-geshi cpp source-cpp">lookup_classname</span></span> 返回的值相互逐位或;结果值表示任一对应字符类中的成员关系</li>
|
|
<li>若 <span class="t-c"><span class="mw-geshi cpp source-cpp">b</span></span> 为 true ,则返回的位掩码适于匹配字符而不考虑其大小写。</li>
|
|
<li>若字符序列不是 <span class="t-c"><span class="mw-geshi cpp source-cpp">X</span></span> 所辨识的字符类名,则返回 <span class="t-c"><span class="mw-geshi cpp source-cpp">​<span class="nu0">0</span>​</span></span> 。</li>
|
|
<li>返回值应当独立于序列中字符的大小写。</li>
|
|
</ul>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">v.<span class="me1">isctype</span><span class="br0">(</span>c, cl<span class="br0">)</span></span></span></td>
|
|
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="kw4">bool</span></span></span></td>
|
|
<td>返回: <span class="t-c"><span class="mw-geshi cpp source-cpp">c</span></span> 是否为 <span class="t-c"><span class="mw-geshi cpp source-cpp">cl</span></span> 所指代的字符类的成员。</td>
|
|
</tr>
|
|
<tr>
|
|
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">v.<span class="me1">value</span><span class="br0">(</span>c, I<span class="br0">)</span></span></span></td>
|
|
<td><span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="kw4">int</span></span></span></td>
|
|
<td>Returns:
|
|
<ul>
|
|
<li>数位 <span class="t-c"><span class="mw-geshi cpp source-cpp">c</span></span> 在 <span class="t-c"><span class="mw-geshi cpp source-cpp">I</span></span> 中表示的值,若字符 <span class="t-c"><span class="mw-geshi cpp source-cpp">c</span></span> 为底 <span class="t-c"><span class="mw-geshi cpp source-cpp">I</span></span> 中合法的数位</li>
|
|
<li>否则为 <span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="sy2">-</span><span class="nu0">1</span></span></span></li>
|
|
</ul>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">u.<span class="me1">imbue</span><span class="br0">(</span>loc<span class="br0">)</span></span></span></td>
|
|
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">X<span class="sy4">::</span><span class="me2">locale_type</span></span></span></td>
|
|
<td>
|
|
<ul>
|
|
<li>以 locale <span class="t-c"><span class="mw-geshi cpp source-cpp">loc</span></span> 感染 <span class="t-c"><span class="mw-geshi cpp source-cpp">u</span></span></li>
|
|
<li>返回 <span class="t-c"><span class="mw-geshi cpp source-cpp">v</span></span> 先前使用的 locale ,若存在。</li>
|
|
</ul>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">v.<span class="me1">getloc</span><span class="br0">(</span><span class="br0">)</span></span></span></td>
|
|
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">X<span class="sy4">::</span><span class="me2">locale_type</span></span></span></td>
|
|
<td>返回 <span class="t-c"><span class="mw-geshi cpp source-cpp">v</span></span> 先前使用的 locale ,若存在。</td>
|
|
</tr>
|
|
</table>
|
|
<p><br /></p>
|
|
<h3><span class="mw-headline" id=".E6.A0.87.E5.87.86.E5.BA.93">标准库</span></h3>
|
|
<p>下列标准库满足正则表达式特性 (<span style="font-style:italic">正则表达式特征</span> <span style="font-family: Georgia, 'DejaVu Serif', serif; font-style:italic">(RegexTraits)</span> ) :</p>
|
|
<table class="t-dcl-begin">
|
|
<tbody>
|
|
<tr class="t-dcl">
|
|
<td>
|
|
<div><span class="mw-geshi cpp source-cpp"><span class="kw1">template</span><span class="sy1"><></span> <span class="kw1">class</span> regex_traits<span class="sy1"><</span><span class="kw4">char</span><span class="sy1">></span><span class="sy4">;</span><br />
|
|
<span class="kw1">template</span><span class="sy1"><></span> <span class="kw1">class</span> regex_traits<span class="sy1"><</span><span class="kw4">wchar_t</span><span class="sy1">></span><span class="sy4">;</span></span></div>
|
|
</td>
|
|
<td class="t-dcl-nopad"></td>
|
|
<td><span class="t-mark-rev t-since-cxx11">(C++11 起)</span><br />
|
|
<span class="t-mark-rev t-since-cxx11">(C++11 起)</span></td>
|
|
</tr>
|
|
<tr class="t-dcl-sep">
|
|
<td></td>
|
|
<td></td>
|
|
<td></td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
<div class="visualClear"></div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</body>
|
|
</html>
|