63 lines
7.6 KiB
HTML
63 lines
7.6 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++ 具名要求:有格式输出函数 (FormattedOutputFunction)</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_FormattedOutputFunction 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">(FormattedOutputFunction)</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">
|
|
<h3><span class="mw-headline" id=".E8.A6.81.E6.B1.82">要求</span></h3>
|
|
<p><strong class="selflink"><span style="font-style:italic">有格式输出函数</span> <span style="font-family: Georgia, 'DejaVu Serif', serif; font-style:italic">(FormattedOutputFunction)</span></strong> 是进行下列操作的流输出函数:</p>
|
|
<ul>
|
|
<li>构造一个拥有自动存储期的 <a href="cpp-io-basic_ostream-sentry.html"><tt>basic_ostream::sentry</tt></a>类型的对象,这进行下列操作</li>
|
|
</ul>
|
|
<dl>
|
|
<dd>
|
|
<ul>
|
|
<li>若输出流上设置了 <a href="cpp-io-ios_base-iostate.html"><tt>eofbit</tt></a> 或 <a href="cpp-io-ios_base-iostate.html"><tt>badbit</tt></a>,则一并设置 <code>failbit</code>,而若此输出流的异常掩码中启用了 failbit 上的异常,则抛出 <a href="cpp-io-ios_base-failure.html"><tt>ios_base::failure</tt></a>。</li>
|
|
<li>冲洗其所 tie() 的输出流,若适用。</li>
|
|
</ul>
|
|
</dd>
|
|
</dl>
|
|
<ul>
|
|
<li>通过调用 <code>sentry::operator bool()</code> 检查 sentry 的状态,等价于 <a href="cpp-io-basic_ios-good.html"><tt>basic_ios::good</tt></a>。</li>
|
|
<li>若 sentry 返回 <span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="kw2">false</span></span></span>,或 sentry 的构造函数抛出了异常,则不发生输出</li>
|
|
<li>若 sentry 返回 <span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="kw2">true</span></span></span>,则如同以调用 <span class="t-c"><span class="mw-geshi cpp source-cpp">rdbuf<span class="br0">(</span><span class="br0">)</span><span class="sy2">-</span><span class="sy1">></span>sputc<span class="br0">(</span><span class="br0">)</span></span></span> 或 <span class="t-c"><span class="mw-geshi cpp source-cpp">rdbuf<span class="br0">(</span><span class="br0">)</span><span class="sy2">-</span><span class="sy1">></span>xsputn<span class="br0">(</span><span class="br0">)</span></span></span>,试图通过插入字符到输出流进行所欲的输出。另外,可能调用 <span class="t-c"><span class="mw-geshi cpp source-cpp">rdbuf<span class="br0">(</span><span class="br0">)</span><span class="sy2">-</span><span class="sy1">></span>overflow<span class="br0">(</span><span class="br0">)</span></span></span> 或 <span class="t-c"><span class="mw-geshi cpp source-cpp">rdbuf<span class="br0">(</span><span class="br0">)</span><span class="sy2">-</span><span class="sy1">></span>sync<span class="br0">(</span><span class="br0">)</span></span></span>,但不会调用 <span class="t-lc"><a href="cpp-io-basic_streambuf.html">std::basic_streambuf</a></span> 的其他虚成员函数。</li>
|
|
</ul>
|
|
<dl>
|
|
<dd>
|
|
<ul>
|
|
<li>若无法生成输出,则设置 <code>failbit</code>。若此流的异常掩码中启用了 failbit 上的异常,则抛出 <a href="cpp-io-ios_base-failure.html"><tt>ios_base::failure</tt></a>。</li>
|
|
<li>若输出中抛出了异常,则设置输出流中的 <code>badbit</code>。若此流的异常掩码中启用了 badbit 上的异常,则亦会重抛该异常。</li>
|
|
<li>若未抛出异常,则返回 <span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="sy2">*</span>this</span></span>。</li>
|
|
</ul>
|
|
</dd>
|
|
</dl>
|
|
<ul>
|
|
<li>任何事件中,无论是因异常终止还是返回,都会在离开此函数前调用 sentry 的析构函数。</li>
|
|
</ul>
|
|
<h3><span class="mw-headline" id=".E6.A0.87.E5.87.86.E5.BA.93">标准库</span></h3>
|
|
<p>下列标准库函数是<strong class="selflink"><span style="font-style:italic">有格式输出函数</span> <span style="font-family: Georgia, 'DejaVu Serif', serif; font-style:italic">(FormattedOutputFunction)</span></strong> 。</p>
|
|
<ul>
|
|
<li><a href="cpp-io-basic_ostream-operator_ltlt.html"><tt>basic_ostream::operator<<<span class="t-dsc-small">(int, long, double, void*, bool)</span></tt></a></li>
|
|
<li><a href="cpp-io-basic_ostream-operator_ltlt2.html"><tt>operator<<<span class="t-dsc-small">(std::basic_ostream, char)</span></tt></a></li>
|
|
<li><a href="cpp-io-basic_ostream-operator_ltlt2.html"><tt>operator<<<span class="t-dsc-small">(std::basic_ostream, char*)</span></tt></a></li>
|
|
<li><a href="cpp-utility-bitset-operator_ltltgtgt2.html"><tt>operator<<<span class="t-dsc-small">(std::basic_ostream, std::bitset)</span></tt></a></li>
|
|
<li><a href="cpp-string-basic_string-operator_ltltgtgt.html"><tt>operator<<<span class="t-dsc-small">(std::basic_ostream, std::string)</span></tt></a></li>
|
|
<li><code>operator<<</code> ,在 <span class="t-lc"><a href="cpp-io-manip-put_money.html">std::put_money</a></span> 的返回值上调用时。</li>
|
|
</ul>
|
|
</div>
|
|
<div class="visualClear"></div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</body>
|
|
</html>
|