72 lines
8.8 KiB
HTML
72 lines
8.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++ 具名要求:有格式输入函数 (FormattedInputFunction)</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_FormattedInputFunction 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">(FormattedInputFunction)</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">(FormattedInputFunction)</span></strong> 是进行下列操作的流输入函数:</p>
|
|
<ul>
|
|
<li>构造一个具有自动存储期的 <a href="cpp-io-basic_istream-sentry.html"><tt>basic_istream::sentry</tt></a> 类型的对象,并将 <code>noskipws</code> 实参设为 <span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="kw2">false</span></span></span>,这导致进行下列操作</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>
|
|
<li>若此输入流上设置了 <code>ios_base::skipws</code> 标志,则提取并舍弃来自输入流的字符,直至下列之一为真:</li>
|
|
</ul>
|
|
<dl>
|
|
<dd>
|
|
<ul>
|
|
<li>输入流上的下个可用字符不是空白字符(以此输入流中当前浸染的本地环境的 <span class="t-lc"><a href="cpp-locale-ctype.html">std::ctype</a></span> 刻面进行测试)。不提取非空白字符。</li>
|
|
<li>抵达流尾,该情况下设置 <code>failbit</code> 和 <code>eofbit</code>,而且若该流开启了这些位之一上的异常,则抛出 <a href="cpp-io-ios_base-failure.html"><tt>ios_base::failure</tt></a>。</li>
|
|
</ul>
|
|
</dd>
|
|
</dl>
|
|
</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>sbumpc<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>sgetc<span class="br0">(</span><span class="br0">)</span></span></span> 一样进行输入。</li>
|
|
</ul>
|
|
<dl>
|
|
<dd>
|
|
<ul>
|
|
<li>若抵达流尾(对 <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>sbumpc<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>sgetc<span class="br0">(</span><span class="br0">)</span></span></span> 的调用返回 <span class="t-c"><span class="mw-geshi cpp source-cpp">Traits<span class="sy4">::</span><span class="me2">eof</span><span class="br0">(</span><span class="br0">)</span></span></span>),则设置 <code>eofbit</code>。若此流的异常掩码中启用了 eofbit 上的异常,则抛出 <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">(FormattedInputFunction)</span></strong> 。</p>
|
|
<ul>
|
|
<li><a href="cpp-io-basic_istream-operator_gtgt.html"><tt>basic_istream::operator>><span class="t-dsc-small">(int, long, double, void*, bool)</span></tt></a></li>
|
|
<li><a href="cpp-io-basic_istream-operator_gtgt2.html"><tt>operator>><span class="t-dsc-small">(std::basic_istream, char&)</span></tt></a></li>
|
|
<li><a href="cpp-io-basic_istream-operator_gtgt2.html"><tt>operator>><span class="t-dsc-small">(std::basic_istream, char*)</span></tt></a></li>
|
|
<li><a href="cpp-utility-bitset-operator_ltltgtgt2.html"><tt>operator>><span class="t-dsc-small">(std::basic_istream, 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_istream, std::string)</span></tt></a></li>
|
|
<li><code>operator>></code>,在 <span class="t-lc"><a href="cpp-io-manip-get_money.html">std::get_money</a></span> 的返回值上调用时。</li>
|
|
</ul>
|
|
</div>
|
|
<div class="visualClear"></div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</body>
|
|
</html>
|