81 lines
8.9 KiB
HTML
81 lines
8.9 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++ 具名要求:无格式输入函数 (UnformattedInputFunction)</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_UnformattedInputFunction 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">(UnformattedInputFunction)</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">(UnformattedInputFunction)</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">true</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>
|
|
</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>
|
|
</ul>
|
|
<dl>
|
|
<dd>
|
|
<ul>
|
|
<li>设置输入流中的已提取字符数 (gcount) 为零</li>
|
|
<li>若是为写入某个 <code>CharT</code> 的数组而进行函数调用,则向该数组的首个位置写入 <code>CharT()</code>(空字符)</li>
|
|
</ul>
|
|
</dd>
|
|
</dl>
|
|
<ul>
|
|
<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>若输入过程中未抛出异常,则设置输入流中的已提取字符数 (gcount)。</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">(UnformattedInputFunction)</span></strong> 。</p>
|
|
<ul>
|
|
<li><span class="t-lc"><a href="cpp-string-basic_string-getline.html">std::getline</a></span>,但它不修改 gcount。</li>
|
|
<li><a href="cpp-io-basic_istream-operator_gtgt.html"><tt>basic_istream::operator>><span class="t-dsc-small">(basic_streambuf*)</span></tt></a></li>
|
|
<li><a href="cpp-io-basic_istream-get.html"><tt>basic_istream::get</tt></a></li>
|
|
<li><a href="cpp-io-basic_istream-getline.html"><tt>basic_istream::getline</tt></a></li>
|
|
<li><a href="cpp-io-basic_istream-ignore.html"><tt>basic_istream::ignore</tt></a></li>
|
|
<li><a href="cpp-io-basic_istream-peek.html"><tt>basic_istream::peek</tt></a></li>
|
|
<li><a href="cpp-io-basic_istream-read.html"><tt>basic_istream::read</tt></a></li>
|
|
<li><a href="cpp-io-basic_istream-readsome.html"><tt>basic_istream::readsome</tt></a></li>
|
|
<li><a href="cpp-io-basic_istream-putback.html"><tt>basic_istream::putback</tt></a>,除了首先清除 <code>eofbit</code></li>
|
|
<li><a href="cpp-io-basic_istream-unget.html"><tt>basic_istream::unget</tt></a>,除了首先清除 <code>eofbit</code></li>
|
|
<li><a href="cpp-io-basic_istream-sync.html"><tt>basic_istream::sync</tt></a>,除了不修改 gcount</li>
|
|
<li><a href="cpp-io-basic_istream-tellg.html"><tt>basic_istream::tellg</tt></a>,除了不修改 gcount</li>
|
|
<li><a href="cpp-io-basic_istream-seekg.html"><tt>basic_istream::seekg</tt></a>,除了首先清除 <code>eofbit</code> 且不修改 gcount</li>
|
|
<li><span class="t-lc"><a href="cpp-io-manip-ws.html">std::ws</a></span> ,除了不修改 gcount 。</li>
|
|
</ul>
|
|
</div>
|
|
<div class="visualClear"></div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</body>
|
|
</html>
|