71 lines
7.1 KiB
HTML
71 lines
7.1 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++ 具名要求:无格式输出函数 (UnformattedOutputFunction)</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_UnformattedOutputFunction 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">(UnformattedOutputFunction)</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">(UnformattedOutputFunction)</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>badbit</code>。若此流的异常掩码中启用了 badbit 上的异常,则亦会重抛这个异常。</li>
|
|
<li>若不抛异常,则返回该函数所指定的值。</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">(UnformattedOutputFunction)</span></strong> 。</p>
|
|
<ul>
|
|
<li><a href="cpp-io-basic_ostream-operator_ltlt.html"><tt>basic_ostream::operator<<<span class="t-dsc-small">(basic_streambuf*)</span></tt></a></li>
|
|
<li><a href="cpp-io-basic_ostream-put.html"><tt>basic_ostream::put</tt></a></li>
|
|
<li><a href="cpp-io-basic_ostream-write.html"><tt>basic_ostream::write</tt></a></li>
|
|
<li><a href="cpp-io-basic_ostream-flush.html"><tt>basic_ostream::flush</tt></a></li>
|
|
</ul>
|
|
<table class="t-rev-begin">
|
|
<tr class="t-rev t-since-cxx11">
|
|
<td>
|
|
<ul>
|
|
<li><a href="cpp-io-basic_ostream-tellp.html"><tt>basic_ostream::tellp</tt></a> (但其调用 pubseekoff 而非进行输出)</li>
|
|
<li><a href="cpp-io-basic_ostream-seekp.html"><tt>basic_ostream::seekp</tt></a> (但其调用 pubseekoff 或 pubseekpos 而非进行输出)</li>
|
|
</ul>
|
|
</td>
|
|
<td><span class="t-mark-rev t-since-cxx11">(C++11 起)</span></td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
<div class="visualClear"></div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</body>
|
|
</html>
|