92 lines
9.8 KiB
HTML
92 lines
9.8 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++ 具名要求:格式化器 (Formatter)</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_Formatter 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">(Formatter)</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">(Formatter)</span></strong> 是对给定的格式化实参类型与字符类型抽象化格式化操作的类型。要求 <span class="t-lc">std::formatter</span> 的特化实现<span style="font-style:italic">格式化器</span> <span style="font-family: Georgia, 'DejaVu Serif', serif; font-style:italic">(Formatter)</span> 。</p>
|
|
<h3><span class="mw-headline" id=".E8.A6.81.E6.B1.82">要求</span></h3>
|
|
<p>一个类型满足<span style="font-style:italic">格式化器</span> <span style="font-family: Georgia, 'DejaVu Serif', serif; font-style:italic">(Formatter)</span> ,若它为半正则,意思是它满足:</p>
|
|
<ul>
|
|
<li><a href="cpp-named_req-DefaultConstructible.html"><span style="font-style:italic">可默认构造</span> <span style="font-family: Georgia, 'DejaVu Serif', serif; font-style:italic">(DefaultConstructible)</span></a></li>
|
|
<li><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></li>
|
|
<li><a href="cpp-named_req-CopyAssignable.html"><span style="font-style:italic">可复制赋值</span> <span style="font-family: Georgia, 'DejaVu Serif', serif; font-style:italic">(CopyAssignable)</span></a></li>
|
|
<li><a href="cpp-named_req-Destructible.html"><span style="font-style:italic">可析构</span> <span style="font-family: Georgia, 'DejaVu Serif', serif; font-style:italic">(Destructible)</span></a></li>
|
|
<li><a href="cpp-named_req-Swappable.html"><span style="font-style:italic">可交换</span> <span style="font-family: Georgia, 'DejaVu Serif', serif; font-style:italic">(Swappable)</span></a></li>
|
|
</ul>
|
|
<p>而且给定</p>
|
|
<ul>
|
|
<li><code>Arg</code> ,格式化实参类型</li>
|
|
<li><code>CharT</code> ,字符类型</li>
|
|
<li><code>Formatter</code> ,对于类型 <code>Arg</code> 与 <code>CharT</code> 的<span style="font-style:italic">格式化器</span> <span style="font-family: Georgia, 'DejaVu Serif', serif; font-style:italic">(Formatter)</span> 类型</li>
|
|
<li><code>OutputIt</code> ,<a href="cpp-named_req-OutputIterator.html"><span style="font-style:italic">老式输出迭代器</span> <span style="font-family: Georgia, 'DejaVu Serif', serif; font-style:italic">(LegacyOutputIterator)</span></a> 类型</li>
|
|
<li><code>formatter</code> , <code>Formatter</code> 类型值</li>
|
|
<li><code>arg</code> , <code>Arg</code> 类型左值</li>
|
|
<li><code>t</code> ,可转换到(可能为 const )的 <code>Arg</code></li>
|
|
<li><code>ParseContext</code> , <span class="t-c"><span class="mw-geshi cpp source-cpp">std<span class="sy4">::</span><span class="me2">basic_format_parse_context</span><span class="sy1"><</span>CharT<span class="sy1">></span></span></span> 的别名</li>
|
|
<li><code>FormatContext</code> , <span class="t-c"><span class="mw-geshi cpp source-cpp">std<span class="sy4">::</span><span class="me2">basic_format_context</span><span class="sy1"><</span>OutputIt, CharT<span class="sy1">></span></span></span> 的别名</li>
|
|
<li><code>parse_context</code> , <code>ParseContext</code> 类型左值</li>
|
|
<li><code>format_context</code> , <code>FormatContext</code> 类型左值</li>
|
|
</ul>
|
|
<table class="wikitable">
|
|
<tr>
|
|
<th>表达式</th>
|
|
<th>返回类型</th>
|
|
<th>语义</th>
|
|
</tr>
|
|
<tr>
|
|
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">formatter.<span class="me1">parse</span><span class="br0">(</span>parse_context<span class="br0">)</span></span></span></td>
|
|
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">ParseContext<span class="sy4">::</span><span class="me2">iterator</span></span></span></td>
|
|
<td>
|
|
<ul>
|
|
<li>对类型 <code>Arg</code> 分析 <span class="t-spar">格式说明</span> <span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="br0">[</span>parse_context.<span class="me1">begin</span><span class="br0">(</span><span class="br0">)</span>, parse_context.<span class="me1">end</span><span class="br0">(</span><span class="br0">)</span><span class="br0">)</span></span></span> ,直至首个未匹配的字符。</li>
|
|
<li>抛出 <span class="t-lc">std::format_error</span> ,除非可分析整个范围或首个未匹配字符是 <span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="br0">}</span></span></span> 。<sup id="cite_ref-1" class="reference"><a href="cpp-named_req-Formatter.html#cite_note-1">[注 1]</a></sup></li>
|
|
<li>存储分析的格式说明符到 <code>formatter</code> 中并返回已分析范围的尾迭代器。</li>
|
|
</ul>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">formatter.<span class="me1">format</span><span class="br0">(</span>t, format_context<span class="br0">)</span></span></span></td>
|
|
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">FormatContext<span class="sy4">::</span>​iterator</span></span></td>
|
|
<td>
|
|
<ul>
|
|
<li>按存储于 <code>formatter</code> 的格式说明符分析 <code>t</code> ,写输出到 <span class="t-c"><span class="mw-geshi cpp source-cpp">format_context.<span class="me1">out</span><span class="br0">(</span><span class="br0">)</span></span></span> 并返回输出范围的尾迭代器。</li>
|
|
<li>输出应当仅依赖
|
|
<ul>
|
|
<li><code>t</code>、</li>
|
|
<li><span class="t-c"><span class="mw-geshi cpp source-cpp">format_context.<span class="me1">locale</span><span class="br0">(</span><span class="br0">)</span></span></span>、</li>
|
|
<li>来自前一次调用的范围 <span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="br0">[</span>parse_context.<span class="me1">begin</span><span class="br0">(</span><span class="br0">)</span>, parse_context.<span class="me1">end</span><span class="br0">(</span><span class="br0">)</span><span class="br0">)</span></span></span> ,以及</li>
|
|
<li>对于任何 <span class="t-lc"><a href="cpp-types-size_t.html">std::size_t</a></span> 类型值 <code>n</code> 的 <span class="t-c"><span class="mw-geshi cpp source-cpp">format_context.<span class="me1">arg</span><span class="br0">(</span>n<span class="br0">)</span></span></span> 。</li>
|
|
</ul>
|
|
</li>
|
|
</ul>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">formatter.<span class="me1">format</span><span class="br0">(</span>arg, format_context<span class="br0">)</span></span></span></td>
|
|
<td><span class="t-c"><span class="mw-geshi cpp source-cpp">FormatContext<span class="sy4">::</span>​iterator</span></span></td>
|
|
<td>
|
|
<p>同上,但不修改 <code>arg</code> 。</p>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
<ol class="references">
|
|
<li id="cite_note-1"><span class="mw-cite-backlink"><a href="cpp-named_req-Formatter.html#cite_ref-1">↑</a></span> <span class="reference-text">这允许格式化器放出有意义的错误消息。</span></li>
|
|
</ol>
|
|
</div>
|
|
<div class="visualClear"></div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</body>
|
|
</html>
|