445 lines
44 KiB
HTML
445 lines
44 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>标准库头文件 <format></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_header_format 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%">标准库头文件</span> <format></h1>
|
|
<div id="bodyContent">
|
|
<div id="contentSub"><span class="subpages">< <a href="cpp.html">cpp</a>‎ | <a href="cpp-header.html">header</a></span></div>
|
|
<div id="mw-content-text" lang="zh" dir="ltr" class="mw-content-ltr" xml:lang="zh">
|
|
<p>此头文件是<a href="cpp-utility-format.html">格式化</a>库的一部分。</p>
|
|
<table class="t-dsc-begin">
|
|
<tr>
|
|
<td colspan="2">
|
|
<h3><span class="mw-headline" id=".E7.B1.BB">类</span></h3>
|
|
</td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-utility-format-formatter.html"><span class="t-lines"><span>formatter</span></span></a></div>
|
|
<div><span class="t-lines"><span><span class="t-mark-rev t-since-cxx20">(C++20)</span></span></span></div>
|
|
</div>
|
|
</td>
|
|
<td>定义给定类型的格式化规则的类模板<br />
|
|
<span class="t-mark">(类模板)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-utility-format-basic_format_parse_context.html"><span class="t-lines"><span>basic_format_parse_context</span><span>format_parse_context</span><span>wformat_parse_context</span></span></a></div>
|
|
<div><span class="t-lines"><span><span class="t-mark-rev t-since-cxx20">(C++20)</span></span><span><span class="t-mark-rev t-since-cxx20">(C++20)</span></span><span><span class="t-mark-rev t-since-cxx20">(C++20)</span></span></span></div>
|
|
</div>
|
|
</td>
|
|
<td>格式化字符串分析器状态<br />
|
|
<span class="t-mark">(类模板)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-utility-format-basic_format_context.html"><span class="t-lines"><span>basic_format_context</span><span>format_context</span><span>wformat_context</span></span></a></div>
|
|
<div><span class="t-lines"><span><span class="t-mark-rev t-since-cxx20">(C++20)</span></span><span><span class="t-mark-rev t-since-cxx20">(C++20)</span></span><span><span class="t-mark-rev t-since-cxx20">(C++20)</span></span></span></div>
|
|
</div>
|
|
</td>
|
|
<td>格式化状态,包括所有格式化参数和输出迭代器<br />
|
|
<span class="t-mark">(类模板)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-utility-format-basic_format_arg.html"><span class="t-lines"><span>basic_format_arg</span></span></a></div>
|
|
<div><span class="t-lines"><span><span class="t-mark-rev t-since-cxx20">(C++20)</span></span></span></div>
|
|
</div>
|
|
</td>
|
|
<td>提供对用户定义格式化器的格式化参数的访问的类模板<br />
|
|
<span class="t-mark">(类模板)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-utility-format-basic_format_args.html"><span class="t-lines"><span>basic_format_args</span><span>format_args</span><span>wformat_args</span></span></a></div>
|
|
<div><span class="t-lines"><span><span class="t-mark-rev t-since-cxx20">(C++20)</span></span><span><span class="t-mark-rev t-since-cxx20">(C++20)</span></span><span><span class="t-mark-rev t-since-cxx20">(C++20)</span></span></span></div>
|
|
</div>
|
|
</td>
|
|
<td>提供对所有格式化参数的访问的类<br />
|
|
<span class="t-mark">(类模板)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-utility-format-format_error.html"><span class="t-lines"><span>format_error</span></span></a></div>
|
|
<div><span class="t-lines"><span><span class="t-mark-rev t-since-cxx20">(C++20)</span></span></span></div>
|
|
</div>
|
|
</td>
|
|
<td>格式化错误时抛出的异常类型<br />
|
|
<span class="t-mark">(类)</span></td>
|
|
</tr>
|
|
<tr>
|
|
<td colspan="2">
|
|
<h3><span class="mw-headline" id=".E5.87.BD.E6.95.B0">函数</span></h3>
|
|
</td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-utility-format-format.html"><span class="t-lines"><span>format</span></span></a></div>
|
|
<div><span class="t-lines"><span><span class="t-mark-rev t-since-cxx20">(C++20)</span></span></span></div>
|
|
</div>
|
|
</td>
|
|
<td>在新 string 中存储参数的格式化表示<br />
|
|
<span class="t-mark">(函数模板)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-utility-format-format_to.html"><span class="t-lines"><span>format_to</span></span></a></div>
|
|
<div><span class="t-lines"><span><span class="t-mark-rev t-since-cxx20">(C++20)</span></span></span></div>
|
|
</div>
|
|
</td>
|
|
<td>通过输出迭代器写其参数的格式化表示<br />
|
|
<span class="t-mark">(函数模板)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-utility-format-format_to_n.html"><span class="t-lines"><span>format_to_n</span></span></a></div>
|
|
<div><span class="t-lines"><span><span class="t-mark-rev t-since-cxx20">(C++20)</span></span></span></div>
|
|
</div>
|
|
</td>
|
|
<td>通过输出迭代器写其参数的格式化表示,不超出指定的大小<br />
|
|
<span class="t-mark">(函数模板)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-utility-format-formatted_size.html"><span class="t-lines"><span>formatted_size</span></span></a></div>
|
|
<div><span class="t-lines"><span><span class="t-mark-rev t-since-cxx20">(C++20)</span></span></span></div>
|
|
</div>
|
|
</td>
|
|
<td>确定存储其参数的格式化表示所需的字符数<br />
|
|
<span class="t-mark">(函数模板)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-utility-format-vformat.html"><span class="t-lines"><span>vformat</span></span></a></div>
|
|
<div><span class="t-lines"><span><span class="t-mark-rev t-since-cxx20">(C++20)</span></span></span></div>
|
|
</div>
|
|
</td>
|
|
<td><span class="t-lc">std::format</span> 的使用类型擦除的参数表示的非模板变体<br />
|
|
<span class="t-mark">(函数)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-utility-format-vformat_to.html"><span class="t-lines"><span>vformat_to</span></span></a></div>
|
|
<div><span class="t-lines"><span><span class="t-mark-rev t-since-cxx20">(C++20)</span></span></span></div>
|
|
</div>
|
|
</td>
|
|
<td><span class="t-lc">std::format_to</span> 的使用类型擦除的参数表示的非模板变体<br />
|
|
<span class="t-mark">(函数模板)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-utility-format-visit_format_arg.html"><span class="t-lines"><span>visit_format_arg</span></span></a></div>
|
|
<div><span class="t-lines"><span><span class="t-mark-rev t-since-cxx20">(C++20)</span></span></span></div>
|
|
</div>
|
|
</td>
|
|
<td>用户定义格式化器的参数观览接口<br />
|
|
<span class="t-mark">(函数模板)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-utility-format-make_format_args.html"><span class="t-lines"><span>make_format_args</span><span>make_wformat_args</span></span></a></div>
|
|
<div><span class="t-lines"><span><span class="t-mark-rev t-since-cxx20">(C++20)</span></span><span><span class="t-mark-rev t-since-cxx20">(C++20)</span></span></span></div>
|
|
</div>
|
|
</td>
|
|
<td>创建引用所有格式化参数的类型擦除对象,可转换到 format_args<br />
|
|
<span class="t-mark">(函数模板)</span></td>
|
|
</tr>
|
|
</table>
|
|
<h3><span class="mw-headline" id=".E6.A6.82.E8.A6.81">概要</span></h3>
|
|
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
|
<div class="cpp source-cpp">
|
|
<pre class="de1"><span class="kw1">namespace</span> std <span class="br0">{</span>
|
|
<span class="co1">// 格式化函数</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span>... <span class="me1">Args</span><span class="sy1">></span>
|
|
string format<span class="br0">(</span>string_view fmt, <span class="kw4">const</span> Args<span class="sy3">&</span>... <span class="me1">args</span><span class="br0">)</span><span class="sy4">;</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span>... <span class="me1">Args</span><span class="sy1">></span>
|
|
wstring format<span class="br0">(</span>wstring_view fmt, <span class="kw4">const</span> Args<span class="sy3">&</span>... <span class="me1">args</span><span class="br0">)</span><span class="sy4">;</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span>... <span class="me1">Args</span><span class="sy1">></span>
|
|
string format<span class="br0">(</span><span class="kw4">const</span> locale<span class="sy3">&</span> loc, string_view fmt, <span class="kw4">const</span> Args<span class="sy3">&</span>... <span class="me1">args</span><span class="br0">)</span><span class="sy4">;</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span>... <span class="me1">Args</span><span class="sy1">></span>
|
|
wstring format<span class="br0">(</span><span class="kw4">const</span> locale<span class="sy3">&</span> loc, wstring_view fmt, <span class="kw4">const</span> Args<span class="sy3">&</span>... <span class="me1">args</span><span class="br0">)</span><span class="sy4">;</span>
|
|
|
|
string vformat<span class="br0">(</span>string_view fmt, format_args args<span class="br0">)</span><span class="sy4">;</span>
|
|
wstring vformat<span class="br0">(</span>wstring_view fmt, wformat_args args<span class="br0">)</span><span class="sy4">;</span>
|
|
string vformat<span class="br0">(</span><span class="kw4">const</span> locale<span class="sy3">&</span> loc, string_view fmt, format_args args<span class="br0">)</span><span class="sy4">;</span>
|
|
wstring vformat<span class="br0">(</span><span class="kw4">const</span> locale<span class="sy3">&</span> loc, wstring_view fmt, wformat_args args<span class="br0">)</span><span class="sy4">;</span>
|
|
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> Out, <span class="kw1">class</span>... <span class="me1">Args</span><span class="sy1">></span>
|
|
Out format_to<span class="br0">(</span>Out out, string_view fmt, <span class="kw4">const</span> Args<span class="sy3">&</span>... <span class="me1">args</span><span class="br0">)</span><span class="sy4">;</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> Out, <span class="kw1">class</span>... <span class="me1">Args</span><span class="sy1">></span>
|
|
Out format_to<span class="br0">(</span>Out out, wstring_view fmt, <span class="kw4">const</span> Args<span class="sy3">&</span>... <span class="me1">args</span><span class="br0">)</span><span class="sy4">;</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> Out, <span class="kw1">class</span>... <span class="me1">Args</span><span class="sy1">></span>
|
|
Out format_to<span class="br0">(</span>Out out, <span class="kw4">const</span> locale<span class="sy3">&</span> loc, string_view fmt, <span class="kw4">const</span> Args<span class="sy3">&</span>... <span class="me1">args</span><span class="br0">)</span><span class="sy4">;</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> Out, <span class="kw1">class</span>... <span class="me1">Args</span><span class="sy1">></span>
|
|
Out format_to<span class="br0">(</span>Out out, <span class="kw4">const</span> locale<span class="sy3">&</span> loc, wstring_view fmt, <span class="kw4">const</span> Args<span class="sy3">&</span>... <span class="me1">args</span><span class="br0">)</span><span class="sy4">;</span>
|
|
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> Out<span class="sy1">></span>
|
|
Out vformat_to<span class="br0">(</span>Out out, string_view fmt,
|
|
format_args_t<span class="sy1"><</span>type_identity_t<span class="sy1"><</span>Out<span class="sy1">></span>, <span class="kw4">char</span><span class="sy1">></span> args<span class="br0">)</span><span class="sy4">;</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> Out<span class="sy1">></span>
|
|
Out vformat_to<span class="br0">(</span>Out out, wstring_view fmt,
|
|
format_args_t<span class="sy1"><</span>type_identity_t<span class="sy1"><</span>Out<span class="sy1">></span>, <span class="kw4">wchar_t</span><span class="sy1">></span> args<span class="br0">)</span><span class="sy4">;</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> Out<span class="sy1">></span>
|
|
Out vformat_to<span class="br0">(</span>Out out, <span class="kw4">const</span> locale<span class="sy3">&</span> loc, string_view fmt,
|
|
format_args_t<span class="sy1"><</span>type_identity_t<span class="sy1"><</span>Out<span class="sy1">></span>, <span class="kw4">char</span><span class="sy1">></span> args<span class="br0">)</span><span class="sy4">;</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> Out<span class="sy1">></span>
|
|
Out vformat_to<span class="br0">(</span>Out out, <span class="kw4">const</span> locale<span class="sy3">&</span> loc, wstring_view fmt,
|
|
format_args_t<span class="sy1"><</span>type_identity_t<span class="sy1"><</span>Out<span class="sy1">></span>, <span class="kw4">wchar_t</span><span class="sy1">></span> args<span class="br0">)</span><span class="sy4">;</span>
|
|
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> Out<span class="sy1">></span> <span class="kw1">struct</span> format_to_n_result <span class="br0">{</span>
|
|
Out out<span class="sy4">;</span>
|
|
iter_difference_t<span class="sy1"><</span>Out<span class="sy1">></span> size<span class="sy4">;</span>
|
|
<span class="br0">}</span><span class="sy4">;</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> Out, <span class="kw1">class</span>... <span class="me1">Args</span><span class="sy1">></span>
|
|
format_to_n_result<span class="sy1"><</span>Out<span class="sy1">></span> format_to_n<span class="br0">(</span>Out out, iter_difference_t<span class="sy1"><</span>Out<span class="sy1">></span> n,
|
|
string_view fmt, <span class="kw4">const</span> Args<span class="sy3">&</span>... <span class="me1">args</span><span class="br0">)</span><span class="sy4">;</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> Out, <span class="kw1">class</span>... <span class="me1">Args</span><span class="sy1">></span>
|
|
format_to_n_result<span class="sy1"><</span>Out<span class="sy1">></span> format_to_n<span class="br0">(</span>Out out, iter_difference_t<span class="sy1"><</span>Out<span class="sy1">></span> n,
|
|
wstring_view fmt, <span class="kw4">const</span> Args<span class="sy3">&</span>... <span class="me1">args</span><span class="br0">)</span><span class="sy4">;</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> Out, <span class="kw1">class</span>... <span class="me1">Args</span><span class="sy1">></span>
|
|
format_to_n_result<span class="sy1"><</span>Out<span class="sy1">></span> format_to_n<span class="br0">(</span>Out out, iter_difference_t<span class="sy1"><</span>Out<span class="sy1">></span> n,
|
|
<span class="kw4">const</span> locale<span class="sy3">&</span> loc, string_view fmt,
|
|
<span class="kw4">const</span> Args<span class="sy3">&</span>... <span class="me1">args</span><span class="br0">)</span><span class="sy4">;</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> Out, <span class="kw1">class</span>... <span class="me1">Args</span><span class="sy1">></span>
|
|
format_to_n_result<span class="sy1"><</span>Out<span class="sy1">></span> format_to_n<span class="br0">(</span>Out out, iter_difference_t<span class="sy1"><</span>Out<span class="sy1">></span> n,
|
|
<span class="kw4">const</span> locale<span class="sy3">&</span> loc, wstring_view fmt,
|
|
<span class="kw4">const</span> Args<span class="sy3">&</span>... <span class="me1">args</span><span class="br0">)</span><span class="sy4">;</span>
|
|
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span>... <span class="me1">Args</span><span class="sy1">></span>
|
|
size_t formatted_size<span class="br0">(</span>string_view fmt, <span class="kw4">const</span> Args<span class="sy3">&</span>... <span class="me1">args</span><span class="br0">)</span><span class="sy4">;</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span>... <span class="me1">Args</span><span class="sy1">></span>
|
|
size_t formatted_size<span class="br0">(</span>wstring_view fmt, <span class="kw4">const</span> Args<span class="sy3">&</span>... <span class="me1">args</span><span class="br0">)</span><span class="sy4">;</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span>... <span class="me1">Args</span><span class="sy1">></span>
|
|
size_t formatted_size<span class="br0">(</span><span class="kw4">const</span> locale<span class="sy3">&</span> loc, string_view fmt, <span class="kw4">const</span> Args<span class="sy3">&</span>... <span class="me1">args</span><span class="br0">)</span><span class="sy4">;</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span>... <span class="me1">Args</span><span class="sy1">></span>
|
|
size_t formatted_size<span class="br0">(</span><span class="kw4">const</span> locale<span class="sy3">&</span> loc, wstring_view fmt, <span class="kw4">const</span> Args<span class="sy3">&</span>... <span class="me1">args</span><span class="br0">)</span><span class="sy4">;</span>
|
|
|
|
<span class="co1">// 格式化器</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> T, <span class="kw1">class</span> charT <span class="sy1">=</span> <span class="kw4">char</span><span class="sy1">></span> <span class="kw1">struct</span> formatter<span class="sy4">;</span>
|
|
|
|
<span class="co1">// 类模板 basic_format_parse_context</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> charT<span class="sy1">></span> <span class="kw1">class</span> basic_format_parse_context<span class="sy4">;</span>
|
|
<span class="kw1">using</span> format_parse_context <span class="sy1">=</span> basic_format_parse_context<span class="sy1"><</span><span class="kw4">char</span><span class="sy1">></span><span class="sy4">;</span>
|
|
<span class="kw1">using</span> wformat_parse_context <span class="sy1">=</span> basic_format_parse_context<span class="sy1"><</span><span class="kw4">wchar_t</span><span class="sy1">></span><span class="sy4">;</span>
|
|
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> Out, <span class="kw1">class</span> charT<span class="sy1">></span> <span class="kw1">class</span> basic_format_context<span class="sy4">;</span>
|
|
<span class="kw1">using</span> format_context <span class="sy1">=</span> basic_format_context<span class="sy1"><</span>unspecified, <span class="kw4">char</span><span class="sy1">></span><span class="sy4">;</span>
|
|
<span class="kw1">using</span> wformat_context <span class="sy1">=</span> basic_format_context<span class="sy1"><</span>unspecified, <span class="kw4">wchar_t</span><span class="sy1">></span><span class="sy4">;</span>
|
|
|
|
<span class="co1">// 实参</span>
|
|
<span class="co1">// 类模板 basic_format_arg</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> Context<span class="sy1">></span> <span class="kw1">class</span> basic_format_arg<span class="sy4">;</span>
|
|
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> Visitor, <span class="kw1">class</span> Context<span class="sy1">></span>
|
|
<span class="coMULTI">/* 见描述 */</span> visit_format_arg<span class="br0">(</span>Visitor<span class="sy3">&&</span> vis, basic_format_arg<span class="sy1"><</span>Context<span class="sy1">></span> arg<span class="br0">)</span><span class="sy4">;</span>
|
|
|
|
<span class="co1">// class template format-arg-store</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> Context, <span class="kw1">class</span>... <span class="me1">Args</span><span class="sy1">></span> <span class="kw1">struct</span> <span class="coMULTI">/*format-arg-store*/</span><span class="sy4">;</span> <span class="co1">// 仅为阐释</span>
|
|
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> Context <span class="sy1">=</span> format_context, <span class="kw1">class</span>... <span class="me1">Args</span><span class="sy1">></span>
|
|
<span class="coMULTI">/*format-arg-store*/</span><span class="sy1"><</span>Context, Args...<span class="sy1">></span>
|
|
make_format_args<span class="br0">(</span><span class="kw4">const</span> Args<span class="sy3">&</span>... <span class="me1">args</span><span class="br0">)</span><span class="sy4">;</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span>... <span class="me1">Args</span><span class="sy1">></span>
|
|
<span class="coMULTI">/*format-arg-store*/</span><span class="sy1"><</span>wformat_context, Args...<span class="sy1">></span>
|
|
make_wformat_args<span class="br0">(</span><span class="kw4">const</span> Args<span class="sy3">&</span>... <span class="me1">args</span><span class="br0">)</span><span class="sy4">;</span>
|
|
|
|
<span class="co1">// 类模板 basic_format_args</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> Context<span class="sy1">></span> <span class="kw1">class</span> basic_format_args<span class="sy4">;</span>
|
|
<span class="kw1">using</span> format_args <span class="sy1">=</span> basic_format_args<span class="sy1"><</span>format_context<span class="sy1">></span><span class="sy4">;</span>
|
|
<span class="kw1">using</span> wformat_args <span class="sy1">=</span> basic_format_args<span class="sy1"><</span>wformat_context<span class="sy1">></span><span class="sy4">;</span>
|
|
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> Out, <span class="kw1">class</span> charT<span class="sy1">></span>
|
|
<span class="kw1">using</span> format_args_t <span class="sy1">=</span> basic_format_args<span class="sy1"><</span>basic_format_context<span class="sy1"><</span>Out, charT<span class="sy1">>></span><span class="sy4">;</span>
|
|
|
|
<span class="co1">// 类 format_error</span>
|
|
<span class="kw1">class</span> format_error<span class="sy4">;</span>
|
|
<span class="br0">}</span></pre></div>
|
|
</div>
|
|
<h4><span class="mw-headline" id=".E7.B1.BB.E6.A8.A1.E6.9D.BF_std::basic_format_parse_context">类模板 <span class="t-lc">std::basic_format_parse_context</span></span></h4>
|
|
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
|
<div class="cpp source-cpp">
|
|
<pre class="de1"><span class="kw1">namespace</span> std <span class="br0">{</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> charT<span class="sy1">></span>
|
|
<span class="kw1">class</span> basic_format_parse_context <span class="br0">{</span>
|
|
<span class="kw1">public</span><span class="sy4">:</span>
|
|
<span class="kw1">using</span> char_type <span class="sy1">=</span> charT<span class="sy4">;</span>
|
|
<span class="kw1">using</span> const_iterator <span class="sy1">=</span> <span class="kw1">typename</span> basic_string_view<span class="sy1"><</span>charT<span class="sy1">></span><span class="sy4">::</span><span class="me2">const_iterator</span><span class="sy4">;</span>
|
|
<span class="kw1">using</span> iterator <span class="sy1">=</span> const_iterator<span class="sy4">;</span>
|
|
|
|
<span class="kw1">private</span><span class="sy4">:</span>
|
|
iterator begin_<span class="sy4">;</span> <span class="co1">// 仅为阐释</span>
|
|
iterator end_<span class="sy4">;</span> <span class="co1">// 仅为阐释</span>
|
|
<span class="kw2">enum</span> indexing <span class="br0">{</span> unknown, manual, automatic <span class="br0">}</span><span class="sy4">;</span> <span class="co1">// 仅为阐释</span>
|
|
indexing indexing_<span class="sy4">;</span> <span class="co1">// 仅为阐释</span>
|
|
size_t next_arg_id_<span class="sy4">;</span> <span class="co1">// 仅为阐释</span>
|
|
size_t num_args_<span class="sy4">;</span> <span class="co1">// 仅为阐释</span>
|
|
|
|
<span class="kw1">public</span><span class="sy4">:</span>
|
|
<span class="kw4">constexpr</span> <span class="kw1">explicit</span> basic_format_parse_context<span class="br0">(</span>basic_string_view<span class="sy1"><</span>charT<span class="sy1">></span> fmt,
|
|
size_t num_args <span class="sy1">=</span> <span class="nu0">0</span><span class="br0">)</span> <span class="kw1">noexcept</span><span class="sy4">;</span>
|
|
basic_format_parse_context<span class="br0">(</span><span class="kw4">const</span> basic_format_parse_context<span class="sy3">&</span><span class="br0">)</span> <span class="sy1">=</span> delete<span class="sy4">;</span>
|
|
basic_format_parse_context<span class="sy3">&</span> operator<span class="sy1">=</span><span class="br0">(</span><span class="kw4">const</span> basic_format_parse_context<span class="sy3">&</span><span class="br0">)</span> <span class="sy1">=</span> delete<span class="sy4">;</span>
|
|
|
|
<span class="kw4">constexpr</span> const_iterator begin<span class="br0">(</span><span class="br0">)</span> <span class="kw4">const</span> <span class="kw1">noexcept</span><span class="sy4">;</span>
|
|
<span class="kw4">constexpr</span> const_iterator end<span class="br0">(</span><span class="br0">)</span> <span class="kw4">const</span> <span class="kw1">noexcept</span><span class="sy4">;</span>
|
|
<span class="kw4">constexpr</span> <span class="kw4">void</span> advance_to<span class="br0">(</span>const_iterator it<span class="br0">)</span><span class="sy4">;</span>
|
|
|
|
<span class="kw4">constexpr</span> size_t next_arg_id<span class="br0">(</span><span class="br0">)</span><span class="sy4">;</span>
|
|
<span class="kw4">constexpr</span> <span class="kw4">void</span> check_arg_id<span class="br0">(</span>size_t id<span class="br0">)</span><span class="sy4">;</span>
|
|
<span class="br0">}</span><span class="sy4">;</span>
|
|
<span class="br0">}</span></pre></div>
|
|
</div>
|
|
<h4><span class="mw-headline" id=".E7.B1.BB.E6.A8.A1.E6.9D.BF_std::basic_format_context">类模板 <span class="t-lc">std::basic_format_context</span></span></h4>
|
|
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
|
<div class="cpp source-cpp">
|
|
<pre class="de1"><span class="kw1">namespace</span> std <span class="br0">{</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> Out, <span class="kw1">class</span> charT<span class="sy1">></span>
|
|
<span class="kw1">class</span> basic_format_context <span class="br0">{</span>
|
|
basic_format_args<span class="sy1"><</span>basic_format_context<span class="sy1">></span> args_<span class="sy4">;</span> <span class="co1">// 仅为阐释</span>
|
|
Out out_<span class="sy4">;</span> <span class="co1">// 仅为阐释</span>
|
|
|
|
<span class="kw1">public</span><span class="sy4">:</span>
|
|
<span class="kw1">using</span> iterator <span class="sy1">=</span> Out<span class="sy4">;</span>
|
|
<span class="kw1">using</span> char_type <span class="sy1">=</span> charT<span class="sy4">;</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> T<span class="sy1">></span> <span class="kw1">using</span> formatter_type <span class="sy1">=</span> formatter<span class="sy1"><</span>T, charT<span class="sy1">></span><span class="sy4">;</span>
|
|
|
|
basic_format_arg<span class="sy1"><</span>basic_format_context<span class="sy1">></span> arg<span class="br0">(</span>size_t id<span class="br0">)</span> <span class="kw4">const</span><span class="sy4">;</span>
|
|
<a href="cpp-locale-locale.html"><span class="kw1894">std::<span class="me2">locale</span></span></a> locale<span class="br0">(</span><span class="br0">)</span><span class="sy4">;</span>
|
|
|
|
iterator out<span class="br0">(</span><span class="br0">)</span><span class="sy4">;</span>
|
|
<span class="kw4">void</span> advance_to<span class="br0">(</span>iterator it<span class="br0">)</span><span class="sy4">;</span>
|
|
<span class="br0">}</span><span class="sy4">;</span>
|
|
<span class="br0">}</span></pre></div>
|
|
</div>
|
|
<h4><span class="mw-headline" id=".E7.B1.BB.E6.A8.A1.E6.9D.BF_std::basic_format_arg">类模板 std::basic_format_arg</span></h4>
|
|
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
|
<div class="cpp source-cpp">
|
|
<pre class="de1"><span class="kw1">namespace</span> std <span class="br0">{</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> Context<span class="sy1">></span>
|
|
<span class="kw1">class</span> basic_format_arg <span class="br0">{</span>
|
|
<span class="kw1">public</span><span class="sy4">:</span>
|
|
<span class="kw1">class</span> handle<span class="sy4">;</span>
|
|
|
|
<span class="kw1">private</span><span class="sy4">:</span>
|
|
<span class="kw1">using</span> char_type <span class="sy1">=</span> <span class="kw1">typename</span> Context<span class="sy4">::</span><span class="me2">char_type</span><span class="sy4">;</span> <span class="co1">// 仅为阐释</span>
|
|
|
|
variant<span class="sy1"><</span>monostate, <span class="kw4">bool</span>, char_type,
|
|
<span class="kw4">int</span>, <span class="kw4">unsigned</span> <span class="kw4">int</span>, <span class="kw4">long</span> <span class="kw4">long</span> <span class="kw4">int</span>, <span class="kw4">unsigned</span> <span class="kw4">long</span> <span class="kw4">long</span> <span class="kw4">int</span>,
|
|
<span class="kw4">float</span>, <span class="kw4">double</span>, <span class="kw4">long</span> <span class="kw4">double</span>,
|
|
<span class="kw4">const</span> char_type<span class="sy2">*</span>, basic_string_view<span class="sy1"><</span>char_type<span class="sy1">></span>,
|
|
<span class="kw4">const</span> <span class="kw4">void</span><span class="sy2">*</span>, handle<span class="sy1">></span> value<span class="sy4">;</span> <span class="co1">// 仅为阐释</span>
|
|
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> T<span class="sy1">></span> <span class="kw1">explicit</span> basic_format_arg<span class="br0">(</span><span class="kw4">const</span> T<span class="sy3">&</span> v<span class="br0">)</span> <span class="kw1">noexcept</span><span class="sy4">;</span> <span class="co1">// 仅为阐释</span>
|
|
<span class="kw1">explicit</span> basic_format_arg<span class="br0">(</span><span class="kw4">float</span> n<span class="br0">)</span> <span class="kw1">noexcept</span><span class="sy4">;</span> <span class="co1">// 仅为阐释</span>
|
|
<span class="kw1">explicit</span> basic_format_arg<span class="br0">(</span><span class="kw4">double</span> n<span class="br0">)</span> <span class="kw1">noexcept</span><span class="sy4">;</span> <span class="co1">// 仅为阐释</span>
|
|
<span class="kw1">explicit</span> basic_format_arg<span class="br0">(</span><span class="kw4">long</span> <span class="kw4">double</span> n<span class="br0">)</span> <span class="kw1">noexcept</span><span class="sy4">;</span> <span class="co1">// 仅为阐释</span>
|
|
<span class="kw1">explicit</span> basic_format_arg<span class="br0">(</span><span class="kw4">const</span> char_type<span class="sy2">*</span> s<span class="br0">)</span><span class="sy4">;</span> <span class="co1">// 仅为阐释</span>
|
|
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> traits<span class="sy1">></span>
|
|
<span class="kw1">explicit</span> basic_format_arg<span class="br0">(</span>
|
|
basic_string_view<span class="sy1"><</span>char_type, traits<span class="sy1">></span> s<span class="br0">)</span> <span class="kw1">noexcept</span><span class="sy4">;</span> <span class="co1">// 仅为阐释</span>
|
|
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> traits, <span class="kw1">class</span> Allocator<span class="sy1">></span>
|
|
<span class="kw1">explicit</span> basic_format_arg<span class="br0">(</span>
|
|
<span class="kw4">const</span> basic_string<span class="sy1"><</span>char_type, traits, Allocator<span class="sy1">></span><span class="sy3">&</span> s<span class="br0">)</span> <span class="kw1">noexcept</span><span class="sy4">;</span> <span class="co1">// 仅为阐释</span>
|
|
|
|
<span class="kw1">explicit</span> basic_format_arg<span class="br0">(</span>nullptr_t<span class="br0">)</span> <span class="kw1">noexcept</span><span class="sy4">;</span> <span class="co1">// 仅为阐释</span>
|
|
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> T<span class="sy1">></span>
|
|
<span class="kw1">explicit</span> basic_format_arg<span class="br0">(</span><span class="kw4">const</span> T<span class="sy2">*</span> p<span class="br0">)</span> <span class="kw1">noexcept</span><span class="sy4">;</span> <span class="co1">// 仅为阐释</span>
|
|
|
|
<span class="kw1">public</span><span class="sy4">:</span>
|
|
basic_format_arg<span class="br0">(</span><span class="br0">)</span> <span class="kw1">noexcept</span><span class="sy4">;</span>
|
|
|
|
<span class="kw1">explicit</span> operator <span class="kw4">bool</span><span class="br0">(</span><span class="br0">)</span> <span class="kw4">const</span> <span class="kw1">noexcept</span><span class="sy4">;</span>
|
|
<span class="br0">}</span><span class="sy4">;</span>
|
|
<span class="br0">}</span></pre></div>
|
|
</div>
|
|
<h4><span class="mw-headline" id=".E7.B1.BB_std::basic_format_arg::handle">类 <span class="t-lc">std::basic_format_arg::handle</span></span></h4>
|
|
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
|
<div class="cpp source-cpp">
|
|
<pre class="de1"><span class="kw1">namespace</span> std <span class="br0">{</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> Context<span class="sy1">></span>
|
|
<span class="kw1">class</span> basic_format_arg<span class="sy1"><</span>Context<span class="sy1">></span><span class="sy4">::</span><span class="me2">handle</span> <span class="br0">{</span>
|
|
<span class="kw4">const</span> <span class="kw4">void</span><span class="sy2">*</span> ptr_<span class="sy4">;</span> <span class="co1">// 仅为阐释</span>
|
|
<span class="kw4">void</span> <span class="br0">(</span><span class="sy2">*</span>format_<span class="br0">)</span><span class="br0">(</span>basic_format_parse_context<span class="sy1"><</span>char_type<span class="sy1">></span><span class="sy3">&</span>,
|
|
Context<span class="sy3">&</span>, <span class="kw4">const</span> <span class="kw4">void</span><span class="sy2">*</span><span class="br0">)</span><span class="sy4">;</span> <span class="co1">// 仅为阐释</span>
|
|
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> T<span class="sy1">></span> <span class="kw1">explicit</span> handle<span class="br0">(</span><span class="kw4">const</span> T<span class="sy3">&</span> val<span class="br0">)</span> <span class="kw1">noexcept</span><span class="sy4">;</span> <span class="co1">// 仅为阐释</span>
|
|
|
|
<span class="kw1">friend</span> <span class="kw1">class</span> basic_format_arg<span class="sy1"><</span>Context<span class="sy1">></span><span class="sy4">;</span> <span class="co1">// 仅为阐释</span>
|
|
|
|
<span class="kw1">public</span><span class="sy4">:</span>
|
|
<span class="kw4">void</span> format<span class="br0">(</span>basic_format_parse_context<span class="sy1"><</span>char_type<span class="sy1">></span><span class="sy3">&</span>, Context<span class="sy3">&</span> ctx<span class="br0">)</span> <span class="kw4">const</span><span class="sy4">;</span>
|
|
<span class="br0">}</span><span class="sy4">;</span>
|
|
<span class="br0">}</span></pre></div>
|
|
</div>
|
|
<h4><span class="mw-headline" id=".E7.B1.BB.E6.A8.A1.E6.9D.BF_format-arg-store">类模板 <i><code>format-arg-store</code></i></span></h4>
|
|
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
|
<div class="cpp source-cpp">
|
|
<pre class="de1"><span class="kw1">namespace</span> std <span class="br0">{</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> Context, <span class="kw1">class</span>... <span class="me1">Args</span><span class="sy1">></span>
|
|
<span class="kw1">struct</span> <span class="coMULTI">/*format-arg-store*/</span> <span class="br0">{</span> <span class="co1">// 仅为阐释</span>
|
|
array<span class="sy1"><</span>basic_format_arg<span class="sy1"><</span>Context<span class="sy1">></span>, sizeof...<span class="br0">(</span>Args<span class="br0">)</span><span class="sy1">></span> args<span class="sy4">;</span>
|
|
<span class="br0">}</span><span class="sy4">;</span>
|
|
<span class="br0">}</span></pre></div>
|
|
</div>
|
|
<h4><span class="mw-headline" id=".E7.B1.BB.E6.A8.A1.E6.9D.BF_std::basic_format_args">类模板 <span class="t-lc">std::basic_format_args</span></span></h4>
|
|
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
|
<div class="cpp source-cpp">
|
|
<pre class="de1"><span class="kw1">namespace</span> std <span class="br0">{</span>
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span> Context<span class="sy1">></span>
|
|
<span class="kw1">class</span> basic_format_args <span class="br0">{</span>
|
|
size_t size_<span class="sy4">;</span> <span class="co1">// 仅为阐释</span>
|
|
<span class="kw4">const</span> basic_format_arg<span class="sy1"><</span>Context<span class="sy1">></span><span class="sy2">*</span> data_<span class="sy4">;</span> <span class="co1">// 仅为阐释</span>
|
|
|
|
<span class="kw1">public</span><span class="sy4">:</span>
|
|
basic_format_args<span class="br0">(</span><span class="br0">)</span> <span class="kw1">noexcept</span><span class="sy4">;</span>
|
|
|
|
<span class="kw1">template</span><span class="sy1"><</span><span class="kw1">class</span>... <span class="me1">Args</span><span class="sy1">></span>
|
|
basic_format_args<span class="br0">(</span><span class="kw4">const</span> <span class="coMULTI">/*format-arg-store*/</span><span class="sy1"><</span>Context, Args...<span class="sy1">></span><span class="sy3">&</span> store<span class="br0">)</span> <span class="kw1">noexcept</span><span class="sy4">;</span>
|
|
|
|
basic_format_arg<span class="sy1"><</span>Context<span class="sy1">></span> get<span class="br0">(</span>size_t i<span class="br0">)</span> <span class="kw4">const</span> <span class="kw1">noexcept</span><span class="sy4">;</span>
|
|
<span class="br0">}</span><span class="sy4">;</span>
|
|
<span class="br0">}</span></pre></div>
|
|
</div>
|
|
<h4><span class="mw-headline" id=".E7.B1.BB_std::format_error">类 <span class="t-lc">std::format_error</span></span></h4>
|
|
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
|
<div class="cpp source-cpp">
|
|
<pre class="de1"><span class="kw1">namespace</span> std <span class="br0">{</span>
|
|
<span class="kw1">class</span> format_error <span class="sy4">:</span> <span class="kw1">public</span> runtime_error <span class="br0">{</span>
|
|
<span class="kw1">public</span><span class="sy4">:</span>
|
|
<span class="kw1">explicit</span> format_error<span class="br0">(</span><span class="kw4">const</span> string<span class="sy3">&</span> what_arg<span class="br0">)</span><span class="sy4">;</span>
|
|
<span class="kw1">explicit</span> format_error<span class="br0">(</span><span class="kw4">const</span> <span class="kw4">char</span><span class="sy2">*</span> what_arg<span class="br0">)</span><span class="sy4">;</span>
|
|
<span class="br0">}</span><span class="sy4">;</span>
|
|
<span class="br0">}</span></pre></div>
|
|
</div>
|
|
</div>
|
|
<div class="visualClear"></div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</body>
|
|
</html>
|