380 lines
51 KiB
HTML
380 lines
51 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>std::num_get<CharT,InputIt>::get, std::num_get<CharT,InputIt>::do_get</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_locale_num_get_get 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%">std::num_get<CharT,InputIt>::</span>get, <span style="font-size:0.7em; line-height:130%">std::num_get<CharT,InputIt>::</span>do_get</h1>
|
|
<div id="bodyContent">
|
|
<div id="contentSub"><span class="subpages">< <a href="cpp.html">cpp</a>‎ | <a href="cpp-locale.html">locale</a>‎ | <a href="cpp-locale-num_get.html">num get</a></span></div>
|
|
<div id="mw-content-text" lang="zh" dir="ltr" class="mw-content-ltr" xml:lang="zh">
|
|
<table class="t-dcl-begin">
|
|
<tbody></tbody>
|
|
<tbody class="t-dcl-rev t-dcl-rev-num">
|
|
<tr class="t-dcl-rev-aux">
|
|
<td></td>
|
|
<td rowspan="142">(1)</td>
|
|
<td></td>
|
|
</tr>
|
|
<tr class="t-dcl">
|
|
<td class="t-dcl-nopad">
|
|
<div><span class="mw-geshi cpp source-cpp"><span class="kw1">public</span><span class="sy4">:</span><br /></span>
|
|
<p>iter_type get<span class="br0">(</span> iter_type in, iter_type end, <a href="cpp-io-ios_base.html"><span class="kw1669">std::<span class="me2">ios_base</span></span></a><span class="sy3">&</span> str,<br /></p>
|
|
<a href="cpp-io-ios_base-iostate.html"><span class="kw1697">std::<span class="me2">ios_base</span><span class="sy4">::</span><span class="me2">iostate</span></span></a><span class="sy3">&</span> err, <span class="kw4">bool</span><span class="sy3">&</span> v <span class="br0">)</span> <span class="kw4">const</span><span class="sy4">;</span></div>
|
|
</td>
|
|
<td class="t-dcl-nopad"></td>
|
|
<td class="t-dcl-nopad"></td>
|
|
</tr>
|
|
<tr class="t-dcl">
|
|
<td class="t-dcl-nopad">
|
|
<div><span class="mw-geshi cpp source-cpp">iter_type get<span class="br0">(</span> iter_type in, iter_type end, <a href="cpp-io-ios_base.html"><span class="kw1669">std::<span class="me2">ios_base</span></span></a><span class="sy3">&</span> str,<br />
|
|
<a href="cpp-io-ios_base-iostate.html"><span class="kw1697">std::<span class="me2">ios_base</span><span class="sy4">::</span><span class="me2">iostate</span></span></a><span class="sy3">&</span> err, <span class="kw4">long</span><span class="sy3">&</span> v <span class="br0">)</span> <span class="kw4">const</span><span class="sy4">;</span></span></div>
|
|
</td>
|
|
<td class="t-dcl-nopad"></td>
|
|
<td class="t-dcl-nopad"></td>
|
|
</tr>
|
|
<tr class="t-dcl t-since-cxx11">
|
|
<td>
|
|
<div><span class="mw-geshi cpp source-cpp">iter_type get<span class="br0">(</span> iter_type in, iter_type end, <a href="cpp-io-ios_base.html"><span class="kw1669">std::<span class="me2">ios_base</span></span></a><span class="sy3">&</span> str,<br />
|
|
<a href="cpp-io-ios_base-iostate.html"><span class="kw1697">std::<span class="me2">ios_base</span><span class="sy4">::</span><span class="me2">iostate</span></span></a><span class="sy3">&</span> err, <span class="kw4">long</span> <span class="kw4">long</span><span class="sy3">&</span> v <span class="br0">)</span> <span class="kw4">const</span><span class="sy4">;</span></span></div>
|
|
</td>
|
|
<td class="t-dcl-nopad"></td>
|
|
<td><span class="t-mark-rev t-since-cxx11">(C++11 起)</span></td>
|
|
</tr>
|
|
<tr class="t-dcl">
|
|
<td class="t-dcl-nopad">
|
|
<div><span class="mw-geshi cpp source-cpp">iter_type get<span class="br0">(</span> iter_type in, iter_type end, <a href="cpp-io-ios_base.html"><span class="kw1669">std::<span class="me2">ios_base</span></span></a><span class="sy3">&</span> str,<br />
|
|
<a href="cpp-io-ios_base-iostate.html"><span class="kw1697">std::<span class="me2">ios_base</span><span class="sy4">::</span><span class="me2">iostate</span></span></a><span class="sy3">&</span> err, <span class="kw4">unsigned</span> <span class="kw4">short</span><span class="sy3">&</span> v <span class="br0">)</span> <span class="kw4">const</span><span class="sy4">;</span></span></div>
|
|
</td>
|
|
<td class="t-dcl-nopad"></td>
|
|
<td class="t-dcl-nopad"></td>
|
|
</tr>
|
|
<tr class="t-dcl">
|
|
<td class="t-dcl-nopad">
|
|
<div><span class="mw-geshi cpp source-cpp">iter_type get<span class="br0">(</span> iter_type in, iter_type end, <a href="cpp-io-ios_base.html"><span class="kw1669">std::<span class="me2">ios_base</span></span></a><span class="sy3">&</span> str,<br />
|
|
<a href="cpp-io-ios_base-iostate.html"><span class="kw1697">std::<span class="me2">ios_base</span><span class="sy4">::</span><span class="me2">iostate</span></span></a><span class="sy3">&</span> err, <span class="kw4">unsigned</span> <span class="kw4">int</span><span class="sy3">&</span> v <span class="br0">)</span> <span class="kw4">const</span><span class="sy4">;</span></span></div>
|
|
</td>
|
|
<td class="t-dcl-nopad"></td>
|
|
<td class="t-dcl-nopad"></td>
|
|
</tr>
|
|
<tr class="t-dcl">
|
|
<td class="t-dcl-nopad">
|
|
<div><span class="mw-geshi cpp source-cpp">iter_type get<span class="br0">(</span> iter_type in, iter_type end, <a href="cpp-io-ios_base.html"><span class="kw1669">std::<span class="me2">ios_base</span></span></a><span class="sy3">&</span> str,<br />
|
|
<a href="cpp-io-ios_base-iostate.html"><span class="kw1697">std::<span class="me2">ios_base</span><span class="sy4">::</span><span class="me2">iostate</span></span></a><span class="sy3">&</span> err, <span class="kw4">unsigned</span> <span class="kw4">long</span><span class="sy3">&</span> v <span class="br0">)</span> <span class="kw4">const</span><span class="sy4">;</span></span></div>
|
|
</td>
|
|
<td class="t-dcl-nopad"></td>
|
|
<td class="t-dcl-nopad"></td>
|
|
</tr>
|
|
<tr class="t-dcl t-since-cxx11">
|
|
<td>
|
|
<div><span class="mw-geshi cpp source-cpp">iter_type get<span class="br0">(</span> iter_type in, iter_type end, <a href="cpp-io-ios_base.html"><span class="kw1669">std::<span class="me2">ios_base</span></span></a><span class="sy3">&</span> str,<br />
|
|
<a href="cpp-io-ios_base-iostate.html"><span class="kw1697">std::<span class="me2">ios_base</span><span class="sy4">::</span><span class="me2">iostate</span></span></a><span class="sy3">&</span> err, <span class="kw4">unsigned</span> <span class="kw4">long</span> <span class="kw4">long</span><span class="sy3">&</span> v <span class="br0">)</span> <span class="kw4">const</span><span class="sy4">;</span></span></div>
|
|
</td>
|
|
<td class="t-dcl-nopad"></td>
|
|
<td><span class="t-mark-rev t-since-cxx11">(C++11 起)</span></td>
|
|
</tr>
|
|
<tr class="t-dcl">
|
|
<td class="t-dcl-nopad">
|
|
<div><span class="mw-geshi cpp source-cpp">iter_type get<span class="br0">(</span> iter_type in, iter_type end, <a href="cpp-io-ios_base.html"><span class="kw1669">std::<span class="me2">ios_base</span></span></a><span class="sy3">&</span> str,<br />
|
|
<a href="cpp-io-ios_base-iostate.html"><span class="kw1697">std::<span class="me2">ios_base</span><span class="sy4">::</span><span class="me2">iostate</span></span></a><span class="sy3">&</span> err, <span class="kw4">float</span><span class="sy3">&</span> v <span class="br0">)</span> <span class="kw4">const</span><span class="sy4">;</span></span></div>
|
|
</td>
|
|
<td class="t-dcl-nopad"></td>
|
|
<td class="t-dcl-nopad"></td>
|
|
</tr>
|
|
<tr class="t-dcl">
|
|
<td class="t-dcl-nopad">
|
|
<div><span class="mw-geshi cpp source-cpp">iter_type get<span class="br0">(</span> iter_type in, iter_type end, <a href="cpp-io-ios_base.html"><span class="kw1669">std::<span class="me2">ios_base</span></span></a><span class="sy3">&</span> str,<br />
|
|
<a href="cpp-io-ios_base-iostate.html"><span class="kw1697">std::<span class="me2">ios_base</span><span class="sy4">::</span><span class="me2">iostate</span></span></a><span class="sy3">&</span> err, <span class="kw4">double</span><span class="sy3">&</span> v <span class="br0">)</span> <span class="kw4">const</span><span class="sy4">;</span></span></div>
|
|
</td>
|
|
<td class="t-dcl-nopad"></td>
|
|
<td class="t-dcl-nopad"></td>
|
|
</tr>
|
|
<tr class="t-dcl">
|
|
<td class="t-dcl-nopad">
|
|
<div><span class="mw-geshi cpp source-cpp">iter_type get<span class="br0">(</span> iter_type in, iter_type end, <a href="cpp-io-ios_base.html"><span class="kw1669">std::<span class="me2">ios_base</span></span></a><span class="sy3">&</span> str,<br />
|
|
<a href="cpp-io-ios_base-iostate.html"><span class="kw1697">std::<span class="me2">ios_base</span><span class="sy4">::</span><span class="me2">iostate</span></span></a><span class="sy3">&</span> err, <span class="kw4">long</span> <span class="kw4">double</span><span class="sy3">&</span> v <span class="br0">)</span> <span class="kw4">const</span><span class="sy4">;</span></span></div>
|
|
</td>
|
|
<td class="t-dcl-nopad"></td>
|
|
<td class="t-dcl-nopad"></td>
|
|
</tr>
|
|
<tr class="t-dcl">
|
|
<td class="t-dcl-nopad">
|
|
<div><span class="mw-geshi cpp source-cpp">iter_type get<span class="br0">(</span> iter_type in, iter_type end, <a href="cpp-io-ios_base.html"><span class="kw1669">std::<span class="me2">ios_base</span></span></a><span class="sy3">&</span> str,<br />
|
|
<a href="cpp-io-ios_base-iostate.html"><span class="kw1697">std::<span class="me2">ios_base</span><span class="sy4">::</span><span class="me2">iostate</span></span></a><span class="sy3">&</span> err, <span class="kw4">void</span><span class="sy2">*</span><span class="sy3">&</span> v <span class="br0">)</span> <span class="kw4">const</span><span class="sy4">;</span></span></div>
|
|
</td>
|
|
<td class="t-dcl-nopad"></td>
|
|
<td class="t-dcl-nopad"></td>
|
|
</tr>
|
|
</tbody>
|
|
<tbody></tbody>
|
|
<tbody class="t-dcl-rev t-dcl-rev-num">
|
|
<tr class="t-dcl-rev-aux">
|
|
<td></td>
|
|
<td rowspan="142">(2)</td>
|
|
<td></td>
|
|
</tr>
|
|
<tr class="t-dcl">
|
|
<td class="t-dcl-nopad">
|
|
<div><span class="mw-geshi cpp source-cpp"><span class="kw1">protected</span><span class="sy4">:</span><br /></span>
|
|
<p><span class="kw1">virtual</span> iter_type do_get<span class="br0">(</span> iter_type in, iter_type end, <a href="cpp-io-ios_base.html"><span class="kw1669">std::<span class="me2">ios_base</span></span></a><span class="sy3">&</span> str,<br /></p>
|
|
<a href="cpp-io-ios_base-iostate.html"><span class="kw1697">std::<span class="me2">ios_base</span><span class="sy4">::</span><span class="me2">iostate</span></span></a><span class="sy3">&</span> err, <span class="kw4">bool</span><span class="sy3">&</span> v <span class="br0">)</span> <span class="kw4">const</span><span class="sy4">;</span></div>
|
|
</td>
|
|
<td class="t-dcl-nopad"></td>
|
|
<td class="t-dcl-nopad"></td>
|
|
</tr>
|
|
<tr class="t-dcl">
|
|
<td class="t-dcl-nopad">
|
|
<div><span class="mw-geshi cpp source-cpp"><span class="kw1">virtual</span> iter_type do_get<span class="br0">(</span> iter_type in, iter_type end, <a href="cpp-io-ios_base.html"><span class="kw1669">std::<span class="me2">ios_base</span></span></a><span class="sy3">&</span> str,<br />
|
|
<a href="cpp-io-ios_base-iostate.html"><span class="kw1697">std::<span class="me2">ios_base</span><span class="sy4">::</span><span class="me2">iostate</span></span></a><span class="sy3">&</span> err, <span class="kw4">long</span><span class="sy3">&</span> v <span class="br0">)</span> <span class="kw4">const</span><span class="sy4">;</span></span></div>
|
|
</td>
|
|
<td class="t-dcl-nopad"></td>
|
|
<td class="t-dcl-nopad"></td>
|
|
</tr>
|
|
<tr class="t-dcl t-since-cxx11">
|
|
<td>
|
|
<div><span class="mw-geshi cpp source-cpp"><span class="kw1">virtual</span> iter_type do_get<span class="br0">(</span> iter_type in, iter_type end, <a href="cpp-io-ios_base.html"><span class="kw1669">std::<span class="me2">ios_base</span></span></a><span class="sy3">&</span> str,<br />
|
|
<a href="cpp-io-ios_base-iostate.html"><span class="kw1697">std::<span class="me2">ios_base</span><span class="sy4">::</span><span class="me2">iostate</span></span></a><span class="sy3">&</span> err, <span class="kw4">long</span> <span class="kw4">long</span><span class="sy3">&</span> v <span class="br0">)</span> <span class="kw4">const</span><span class="sy4">;</span></span></div>
|
|
</td>
|
|
<td class="t-dcl-nopad"></td>
|
|
<td><span class="t-mark-rev t-since-cxx11">(C++11 起)</span></td>
|
|
</tr>
|
|
<tr class="t-dcl">
|
|
<td class="t-dcl-nopad">
|
|
<div><span class="mw-geshi cpp source-cpp"><span class="kw1">virtual</span> iter_type do_get<span class="br0">(</span> iter_type in, iter_type end, <a href="cpp-io-ios_base.html"><span class="kw1669">std::<span class="me2">ios_base</span></span></a><span class="sy3">&</span> str,<br />
|
|
<a href="cpp-io-ios_base-iostate.html"><span class="kw1697">std::<span class="me2">ios_base</span><span class="sy4">::</span><span class="me2">iostate</span></span></a><span class="sy3">&</span> err, <span class="kw4">unsigned</span> <span class="kw4">short</span><span class="sy3">&</span> v <span class="br0">)</span> <span class="kw4">const</span><span class="sy4">;</span></span></div>
|
|
</td>
|
|
<td class="t-dcl-nopad"></td>
|
|
<td class="t-dcl-nopad"></td>
|
|
</tr>
|
|
<tr class="t-dcl">
|
|
<td class="t-dcl-nopad">
|
|
<div><span class="mw-geshi cpp source-cpp"><span class="kw1">virtual</span> iter_type do_get<span class="br0">(</span> iter_type in, iter_type end, <a href="cpp-io-ios_base.html"><span class="kw1669">std::<span class="me2">ios_base</span></span></a><span class="sy3">&</span> str,<br />
|
|
<a href="cpp-io-ios_base-iostate.html"><span class="kw1697">std::<span class="me2">ios_base</span><span class="sy4">::</span><span class="me2">iostate</span></span></a><span class="sy3">&</span> err, <span class="kw4">unsigned</span> <span class="kw4">int</span><span class="sy3">&</span> v <span class="br0">)</span> <span class="kw4">const</span><span class="sy4">;</span></span></div>
|
|
</td>
|
|
<td class="t-dcl-nopad"></td>
|
|
<td class="t-dcl-nopad"></td>
|
|
</tr>
|
|
<tr class="t-dcl">
|
|
<td class="t-dcl-nopad">
|
|
<div><span class="mw-geshi cpp source-cpp"><span class="kw1">virtual</span> iter_type do_get<span class="br0">(</span> iter_type in, iter_type end, <a href="cpp-io-ios_base.html"><span class="kw1669">std::<span class="me2">ios_base</span></span></a><span class="sy3">&</span> str,<br />
|
|
<a href="cpp-io-ios_base-iostate.html"><span class="kw1697">std::<span class="me2">ios_base</span><span class="sy4">::</span><span class="me2">iostate</span></span></a><span class="sy3">&</span> err, <span class="kw4">unsigned</span> <span class="kw4">long</span><span class="sy3">&</span> v <span class="br0">)</span> <span class="kw4">const</span><span class="sy4">;</span></span></div>
|
|
</td>
|
|
<td class="t-dcl-nopad"></td>
|
|
<td class="t-dcl-nopad"></td>
|
|
</tr>
|
|
<tr class="t-dcl t-since-cxx11">
|
|
<td>
|
|
<div><span class="mw-geshi cpp source-cpp"><span class="kw1">virtual</span> iter_type do_get<span class="br0">(</span> iter_type in, iter_type end, <a href="cpp-io-ios_base.html"><span class="kw1669">std::<span class="me2">ios_base</span></span></a><span class="sy3">&</span> str,<br />
|
|
<a href="cpp-io-ios_base-iostate.html"><span class="kw1697">std::<span class="me2">ios_base</span><span class="sy4">::</span><span class="me2">iostate</span></span></a><span class="sy3">&</span> err, <span class="kw4">unsigned</span> <span class="kw4">long</span> <span class="kw4">long</span><span class="sy3">&</span> v <span class="br0">)</span> <span class="kw4">const</span><span class="sy4">;</span></span></div>
|
|
</td>
|
|
<td class="t-dcl-nopad"></td>
|
|
<td><span class="t-mark-rev t-since-cxx11">(C++11 起)</span></td>
|
|
</tr>
|
|
<tr class="t-dcl">
|
|
<td class="t-dcl-nopad">
|
|
<div><span class="mw-geshi cpp source-cpp"><span class="kw1">virtual</span> iter_type do_get<span class="br0">(</span> iter_type in, iter_type end, <a href="cpp-io-ios_base.html"><span class="kw1669">std::<span class="me2">ios_base</span></span></a><span class="sy3">&</span> str,<br />
|
|
<a href="cpp-io-ios_base-iostate.html"><span class="kw1697">std::<span class="me2">ios_base</span><span class="sy4">::</span><span class="me2">iostate</span></span></a><span class="sy3">&</span> err, <span class="kw4">float</span><span class="sy3">&</span> v <span class="br0">)</span> <span class="kw4">const</span><span class="sy4">;</span></span></div>
|
|
</td>
|
|
<td class="t-dcl-nopad"></td>
|
|
<td class="t-dcl-nopad"></td>
|
|
</tr>
|
|
<tr class="t-dcl">
|
|
<td class="t-dcl-nopad">
|
|
<div><span class="mw-geshi cpp source-cpp"><span class="kw1">virtual</span> iter_type do_get<span class="br0">(</span> iter_type in, iter_type end, <a href="cpp-io-ios_base.html"><span class="kw1669">std::<span class="me2">ios_base</span></span></a><span class="sy3">&</span> str,<br />
|
|
<a href="cpp-io-ios_base-iostate.html"><span class="kw1697">std::<span class="me2">ios_base</span><span class="sy4">::</span><span class="me2">iostate</span></span></a><span class="sy3">&</span> err, <span class="kw4">double</span><span class="sy3">&</span> v <span class="br0">)</span> <span class="kw4">const</span><span class="sy4">;</span></span></div>
|
|
</td>
|
|
<td class="t-dcl-nopad"></td>
|
|
<td class="t-dcl-nopad"></td>
|
|
</tr>
|
|
<tr class="t-dcl">
|
|
<td class="t-dcl-nopad">
|
|
<div><span class="mw-geshi cpp source-cpp"><span class="kw1">virtual</span> iter_type do_get<span class="br0">(</span> iter_type in, iter_type end, <a href="cpp-io-ios_base.html"><span class="kw1669">std::<span class="me2">ios_base</span></span></a><span class="sy3">&</span> str,<br />
|
|
<a href="cpp-io-ios_base-iostate.html"><span class="kw1697">std::<span class="me2">ios_base</span><span class="sy4">::</span><span class="me2">iostate</span></span></a><span class="sy3">&</span> err, <span class="kw4">long</span> <span class="kw4">double</span><span class="sy3">&</span> v <span class="br0">)</span> <span class="kw4">const</span><span class="sy4">;</span></span></div>
|
|
</td>
|
|
<td class="t-dcl-nopad"></td>
|
|
<td class="t-dcl-nopad"></td>
|
|
</tr>
|
|
<tr class="t-dcl">
|
|
<td class="t-dcl-nopad">
|
|
<div><span class="mw-geshi cpp source-cpp"><span class="kw1">virtual</span> iter_type do_get<span class="br0">(</span> iter_type in, iter_type end, <a href="cpp-io-ios_base.html"><span class="kw1669">std::<span class="me2">ios_base</span></span></a><span class="sy3">&</span> str,<br />
|
|
<a href="cpp-io-ios_base-iostate.html"><span class="kw1697">std::<span class="me2">ios_base</span><span class="sy4">::</span><span class="me2">iostate</span></span></a><span class="sy3">&</span> err, <span class="kw4">void</span><span class="sy2">*</span><span class="sy3">&</span> v <span class="br0">)</span> <span class="kw4">const</span><span class="sy4">;</span></span></div>
|
|
</td>
|
|
<td class="t-dcl-nopad"></td>
|
|
<td class="t-dcl-nopad"></td>
|
|
</tr>
|
|
</tbody>
|
|
<tbody>
|
|
<tr class="t-dcl-sep">
|
|
<td></td>
|
|
<td></td>
|
|
<td></td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<div class="t-li1"><span class="t-li">1)</span> 公开成员函数,调用最终导出类的成员函数 <code>do_get</code> 。</div>
|
|
<div class="t-li1"><span class="t-li">2)</span> 从输入迭代器 <code>in</code> 读取字符,并生成 <code>v</code> 的类型的值,考虑来自 IO 流 <code>str.flags()</code> 的格式化标志,来自 <span class="t-c"><span class="mw-geshi cpp source-cpp"><a href="cpp-locale-use_facet.html"><span class="kw1897">std::<span class="me2">use_facet</span></span></a><span class="sy1"><</span><a href="cpp-locale-ctype.html"><span class="kw1938">std::<span class="me2">ctype</span></span></a><span class="sy1"><</span>charT<span class="sy1">>></span><span class="br0">(</span>str.<span class="me1">getloc</span><span class="br0">(</span><span class="br0">)</span><span class="br0">)</span></span></span> 的字符分类规则,和来自 <span class="t-c"><span class="mw-geshi cpp source-cpp"><a href="cpp-locale-use_facet.html"><span class="kw1897">std::<span class="me2">use_facet</span></span></a><span class="sy1"><</span><a href="cpp-locale-numpunct.html"><span class="kw1961">std::<span class="me2">numpunct</span></span></a><span class="sy1"><</span>charT<span class="sy1">>></span><span class="br0">(</span>str.<span class="me1">getloc</span><span class="br0">(</span><span class="br0">)</span><span class="br0">)</span></span></span> 的数值标点字符。此函数为所有有格式输入流运算符,如 <span class="t-c"><span class="mw-geshi cpp source-cpp"><a href="cpp-io-cin.html"><span class="kw1756">std::<span class="me2">cin</span></span></a> <span class="sy1">>></span> n<span class="sy4">;</span></span></span> 所调用。</div>
|
|
<p>转换出现三个阶段</p>
|
|
<h4><span class="mw-headline" id=".E9.98.B6.E6.AE.B5_1_.EF.BC.9A.E8.BD.AC.E6.8D.A2.E8.AF.B4.E6.98.8E.E7.AC.A6.E9.80.89.E6.8B.A9">阶段 1 :转换说明符选择</span></h4>
|
|
<ul>
|
|
<li>获得 I/O 格式化标志,如同以</li>
|
|
</ul>
|
|
<dl>
|
|
<dd><span class="t-c"><span class="mw-geshi cpp source-cpp">fmtflags basefield <span class="sy1">=</span> <span class="br0">(</span>str.<span class="me1">flags</span><span class="br0">(</span><span class="br0">)</span> <span class="sy3">&</span> <a href="cpp-io-ios_base-fmtflags.html"><span class="kw1682">std::<span class="me2">ios_base</span><span class="sy4">::</span><span class="me2">basefield</span></span></a><span class="br0">)</span><span class="sy4">;</span></span></span></dd>
|
|
<dd><span class="t-c"><span class="mw-geshi cpp source-cpp">fmtflags boolalpha <span class="sy1">=</span> <span class="br0">(</span>str.<span class="me1">flags</span><span class="br0">(</span><span class="br0">)</span> <span class="sy3">&</span> <a href="cpp-io-ios_base-fmtflags.html"><span class="kw1690">std::<span class="me2">ios_base</span><span class="sy4">::</span><span class="me2">boolalpha</span></span></a><span class="br0">)</span><span class="sy4">;</span></span></span></dd>
|
|
</dl>
|
|
<ul>
|
|
<li>若 <code>v</code> 的类型为整数类型,则选择下列五个选项的首个可应用者:</li>
|
|
</ul>
|
|
<dl>
|
|
<dd>若 <span class="t-c"><span class="mw-geshi cpp source-cpp">basefield <span class="sy1">==</span> oct</span></span> ,则将使用转换说明符 <span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="sy2">%</span>o</span></span></dd>
|
|
<dd>若 <span class="t-c"><span class="mw-geshi cpp source-cpp">basefield <span class="sy1">==</span> hex</span></span> ,则将使用转换说明符 <span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="sy2">%</span>X</span></span></dd>
|
|
<dd>若 <span class="t-c"><span class="mw-geshi cpp source-cpp">basefield <span class="sy1">==</span> <span class="nu0">0</span></span></span> ,则将使用转换说明符 <span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="sy2">%</span>i</span></span></dd>
|
|
<dd>若 <code>v</code> 的类型有符号,则将使用转换说明符 <span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="sy2">%</span>d</span></span></dd>
|
|
<dd>若 <code>v</code> 的类型无符号,则将使用转换说明符 <span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="sy2">%</span>u</span></span></dd>
|
|
</dl>
|
|
<ul>
|
|
<li>对于整数类型,若需要则添加长度说明符到转换说明:对于 <span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="kw4">short</span></span></span> 和 <span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="kw4">unsigned</span> <span class="kw4">short</span></span></span> 为 <span class="t-c"><span class="mw-geshi cpp source-cpp">h</span></span> ,对于 <span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="kw4">long</span></span></span> 和 <span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="kw4">unsigned</span> <span class="kw4">long</span></span></span> 为 <span class="t-c"><span class="mw-geshi cpp source-cpp">l</span></span> ,对于 <span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="kw4">long</span> <span class="kw4">long</span></span></span> 和 <span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="kw4">unsigned</span> <span class="kw4">long</span> <span class="kw4">long</span></span></span> 为 <span class="t-c"><span class="mw-geshi cpp source-cpp">ll</span></span></li>
|
|
<li>若 <code>v</code> 的类型为 <span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="kw4">float</span></span></span> ,则将使用转换说明符 <span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="sy2">%</span>g</span></span></li>
|
|
<li>若 <code>v</code> 的类型为 <span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="kw4">double</span></span></span> ,则将使用转换说明符 <span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="sy2">%</span>lg</span></span></li>
|
|
<li>若 <code>v</code> 的类型为 <span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="kw4">long</span> <span class="kw4">double</span></span></span> ,则将使用转换说明符 <span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="sy2">%</span>Lg</span></span></li>
|
|
<li>若 <code>v</code> 的类型为 <span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="kw4">void</span><span class="sy2">*</span></span></span> ,则将使用转换说明符 <span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="sy2">%</span>p</span></span></li>
|
|
<li>若 <code>v</code> 的类型为 <span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="kw4">bool</span></span></span> 且 <span class="t-c"><span class="mw-geshi cpp source-cpp">boolalpha<span class="sy1">==</span><span class="nu0">0</span></span></span> ,则如同按 <code>v</code> 的类型为 <span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="kw4">long</span></span></span> 一般处理,除了在阶段 3 存储于 <code>v</code> 的值。</li>
|
|
<li>若 <code>v</code> 的类型为 <span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="kw4">bool</span></span></span> 且 <span class="t-c"><span class="mw-geshi cpp source-cpp">boolalpha<span class="sy3">!</span><span class="sy1">=</span><span class="nu0">0</span></span></span> ,则下列规则替换阶段 2 和 3 :
|
|
<ul>
|
|
<li>从输入迭代器 <code>in</code> 获得匹配获得自 <span class="t-c"><span class="mw-geshi cpp source-cpp"><a href="cpp-locale-use_facet.html"><span class="kw1897">std::<span class="me2">use_facet</span></span></a><span class="sy1"><</span><a href="cpp-locale-numpunct.html"><span class="kw1961">std::<span class="me2">numpunct</span></span></a><span class="sy1"><</span>charT<span class="sy1">>></span><span class="br0">(</span>str.<span class="me1">getloc</span><span class="br0">(</span><span class="br0">)</span><span class="br0">)</span>.<span class="me1">falsename</span><span class="br0">(</span><span class="br0">)</span></span></span> 和 <span class="t-c"><span class="mw-geshi cpp source-cpp"><a href="cpp-locale-use_facet.html"><span class="kw1897">std::<span class="me2">use_facet</span></span></a><span class="sy1"><</span><a href="cpp-locale-numpunct.html"><span class="kw1961">std::<span class="me2">numpunct</span></span></a><span class="sy1"><</span>charT<span class="sy1">></span> <span class="sy1">></span><span class="br0">(</span>str.<span class="me1">getloc</span><span class="br0">(</span><span class="br0">)</span><span class="br0">)</span>.<span class="me1">truename</span><span class="br0">(</span><span class="br0">)</span></span></span> 的相继字符,而且仅按需要匹配鉴别唯一匹配。仅在需要获得字符时,将输入迭代器 <code>in</code> 与 <code>end</code> 比较。</li>
|
|
<li>若目标序列为唯一匹配,则设置 <code>v</code> 为对应的 <span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="kw4">bool</span></span></span> 值。否则存储 <span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="kw2">false</span></span></span> 于 <code>v</code> 并赋值 <span class="t-lc"><a href="cpp-io-ios_base-iostate.html">std::ios_base::failbit</a></span> 给 <code>err</code> 。若在输入结束( <span class="t-c"><span class="mw-geshi cpp source-cpp">in<span class="sy1">==</span>end</span></span> )前无法找到唯一匹配,则执行 <span class="t-c"><span class="mw-geshi cpp source-cpp">err<span class="sy3">|</span><span class="sy1">=</span><a href="cpp-io-ios_base-iostate.html"><span class="kw1701">std::<span class="me2">ios_base</span><span class="sy4">::</span><span class="me2">eofbit</span></span></a></span></span> 。</li>
|
|
</ul>
|
|
</li>
|
|
</ul>
|
|
<h4><span class="mw-headline" id=".E9.98.B6.E6.AE.B5_2_.EF.BC.9A.E5.AD.97.E7.AC.A6.E6.8F.90.E5.8F.96">阶段 2 :字符提取</span></h4>
|
|
<ul>
|
|
<li>若 <span class="t-c"><span class="mw-geshi cpp source-cpp">in<span class="sy1">==</span>end</span></span> ,则立即终止阶段 2 ,则不再提取更多字符</li>
|
|
<li>如同以 <span class="t-c"><span class="mw-geshi cpp source-cpp">char_type ct <span class="sy1">=</span> <span class="sy2">*</span>in<span class="sy4">;</span></span></span> 从 <span class="t-c"><span class="mw-geshi cpp source-cpp">in</span></span> 提取下个字符
|
|
<ul>
|
|
<li>若字符匹配如同用 <span class="t-c"><span class="mw-geshi cpp source-cpp"><a href="cpp-locale-use_facet.html"><span class="kw1897">std::<span class="me2">use_facet</span></span></a><span class="sy1"><</span><a href="cpp-locale-ctype.html"><span class="kw1938">std::<span class="me2">ctype</span></span></a><span class="sy1"><</span>charT<span class="sy1">>></span><span class="br0">(</span>str.<span class="me1">getloc</span><span class="br0">(</span><span class="br0">)</span><span class="br0">)</span>.<span class="me1">widen</span><span class="br0">(</span><span class="br0">)</span></span></span> 加宽到 locale 的 char_type 的 <span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="st0">"0123456789abcdefxABCDEFX+-"</span></span></span> 字符之一,则将它转换为对应的 <span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="kw4">char</span></span></span> 。</li>
|
|
<li>若字符匹配小数点( <span class="t-c"><span class="mw-geshi cpp source-cpp"><a href="cpp-locale-use_facet.html"><span class="kw1897">std::<span class="me2">use_facet</span></span></a><span class="sy1"><</span><a href="cpp-locale-numpunct.html"><span class="kw1961">std::<span class="me2">numpunct</span></span></a><span class="sy1"><</span>charT<span class="sy1">>></span><span class="br0">(</span>str.<span class="me1">getloc</span><span class="br0">(</span><span class="br0">)</span><span class="br0">)</span>.<span class="me1">decimal_point</span><span class="br0">(</span><span class="br0">)</span><span class="br0">)</span></span></span> ),则以 <span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="st0">'.'</span></span></span> 替换之。</li>
|
|
<li>若字符匹配千分隔符( <span class="t-c"><span class="mw-geshi cpp source-cpp"><a href="cpp-locale-use_facet.html"><span class="kw1897">std::<span class="me2">use_facet</span></span></a><span class="sy1"><</span><a href="cpp-locale-numpunct.html"><span class="kw1961">std::<span class="me2">numpunct</span></span></a><span class="sy1"><</span>charT<span class="sy1">>></span><span class="br0">(</span>str.<span class="me1">getloc</span><span class="br0">(</span><span class="br0">)</span><span class="br0">)</span>.<span class="me1">thousands_sep</span><span class="br0">(</span><span class="br0">)</span></span></span> )且在所有 <span class="t-c"><span class="mw-geshi cpp source-cpp"><a href="cpp-locale-use_facet.html"><span class="kw1897">std::<span class="me2">use_facet</span></span></a><span class="sy1"><</span><a href="cpp-locale-numpunct.html"><span class="kw1961">std::<span class="me2">numpunct</span></span></a><span class="sy1"><</span>charT<span class="sy1">>></span><span class="br0">(</span>str.<span class="me1">getloc</span><span class="br0">(</span><span class="br0">)</span><span class="br0">)</span>.<span class="me1">grouping</span><span class="br0">(</span><span class="br0">)</span>.<span class="me1">length</span><span class="br0">(</span><span class="br0">)</span> <span class="sy3">!</span><span class="sy1">=</span> <span class="nu0">0</span></span></span> 中使用千分隔,则若尚未积累小数点 <span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="st0">'.'</span></span></span> ,则记忆该字符的位置,但其他情况下忽略该字符。若已基类小数点,则舍弃该字符并终止阶段 2 。</li>
|
|
<li>任何情况下,检查从前一步骤获得的 <span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="kw4">char</span></span></span> 是否在会为 <span class="t-lc"><a href="cpp-io-c-fscanf.html">std::scanf</a></span> 给定阶段 1 中选择的转换指定符的输入域中得到允许。若它受允许,则将它积累到临时缓冲区并重复阶段 2 。若它不受允许,则阶段 2 终止。</li>
|
|
</ul>
|
|
</li>
|
|
</ul>
|
|
<h4><span class="mw-headline" id=".E9.98.B6.E6.AE.B5_3_.EF.BC.9A.E8.BD.AC.E6.8D.A2.E4.B8.8E.E5.AD.98.E5.82.A8">阶段 3 :转换与存储</span></h4>
|
|
<ul>
|
|
<li>转换阶段 2 中积累的 <span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="kw4">char</span></span></span> 序列为数值</li>
|
|
</ul>
|
|
<dl>
|
|
<dd>如同以对有符号整数 <code>v</code> 的 <span class="t-lc"><a href="cpp-string-byte-strtol.html">std::strtoll</a></span> 、对无符号整数 <code>v</code> 的 <span class="t-lc"><a href="cpp-string-byte-strtoul.html">std::strtoull</a></span> 、对 <code>float</code> <code>v</code> 的 <span class="t-lc"><a href="cpp-string-byte-strtof.html">std::strtof</a></span> 、对 <code>double</code> <code>v</code> 的 <span class="t-lc"><a href="cpp-string-byte-strtof.html">std::strtod</a></span> 或对 <code>long double</code> <code>v</code> 的 <span class="t-lc"><a href="cpp-string-byte-strtof.html">std::strtold</a></span> 分析输入</dd>
|
|
</dl>
|
|
<ul>
|
|
<li>若转换函数无法转换整个域,则存储值 <span class="t-c"><span class="mw-geshi cpp source-cpp">​<span class="nu0">0</span>​</span></span> 于 <code>v</code> 。</li>
|
|
<li>若转换函数产生过大而无法适合作为有符号整数类型的 <code>v</code> 类型的正值或负值,则分别存储可表示的最正值或最负值于 <code>v</code> 。</li>
|
|
<li>若转换函数产生不适合作为无符号整数类型的 <code>v</code> 类型的值,则存储可表示的最正值于 <code>v</code> 。</li>
|
|
<li>任何情况下,若转换函数失败,则赋值 <span class="t-lc"><a href="cpp-io-ios_base-iostate.html">std::ios_base::failbit</a></span> 为 <code>err</code></li>
|
|
<li>否则,存储转换的数值结果于 <code>v</code>
|
|
<ul>
|
|
<li>若 <code>v</code> 的类型为 <span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="kw4">bool</span></span></span> 且未设置 boolalpha ,则若要存储的值为 <span class="t-c"><span class="mw-geshi cpp source-cpp">​<span class="nu0">0</span>​</span></span> 则存储 <span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="kw2">false</span></span></span> ,若要存储的值为 <span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="nu0">1</span></span></span> 则存储 <span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="kw2">true</span></span></span> ,对于任何其他值,赋值 <span class="t-lc"><a href="cpp-io-ios_base-iostate.html">std::ios_base::failbit</a></span> 为 <code>err</code> 并存储 <span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="kw2">true</span></span></span> 。</li>
|
|
</ul>
|
|
</li>
|
|
<li>之后,检查数位分组。若阶段 2 中舍弃的任何千分隔符的位置不匹配 <span class="t-c"><span class="mw-geshi cpp source-cpp"><a href="cpp-locale-use_facet.html"><span class="kw1897">std::<span class="me2">use_facet</span></span></a><span class="sy1"><</span><a href="cpp-locale-numpunct.html"><span class="kw1961">std::<span class="me2">numpunct</span></span></a><span class="sy1"><</span>charT<span class="sy1">>></span><span class="br0">(</span>str.<span class="me1">getloc</span><span class="br0">(</span><span class="br0">)</span><span class="br0">)</span>.<span class="me1">grouping</span><span class="br0">(</span><span class="br0">)</span></span></span> 所提供的分组,则赋值 <span class="t-lc"><a href="cpp-io-ios_base-iostate.html">std::ios_base::failbit</a></span> 为 <code>err</code> 。</li>
|
|
<li>若因测试 <span class="t-c"><span class="mw-geshi cpp source-cpp">in<span class="sy1">==</span>end</span></span> 终止阶段 2 ,则执行 <span class="t-c"><span class="mw-geshi cpp source-cpp">err<span class="sy3">|</span><span class="sy1">=</span><a href="cpp-io-ios_base-iostate.html"><span class="kw1701">std::<span class="me2">ios_base</span><span class="sy4">::</span><span class="me2">eofbit</span></span></a></span></span> 设置 eof 位。</li>
|
|
</ul>
|
|
<h3><span class="mw-headline" id=".E8.BF.94.E5.9B.9E.E5.80.BC">返回值</span></h3>
|
|
<p><code>in</code></p>
|
|
<h3><span class="mw-headline" id=".E6.B3.A8.E8.A7.A3">注解</span></h3>
|
|
<p>C++98/C++03 指定若出现错误则保留 <code>v</code> 不更改。这种行为被并入 C++11 的 <a rel="nofollow" class="external text" href="https://cplusplus.github.io/LWG/issue23">LWG23</a> 及 <a rel="nofollow" class="external text" href="https://cplusplus.github.io/LWG/issue696">LWG696</a> 更正。</p>
|
|
<p>转换负整数字符串为无符号整数时,某些实现产生零(因为字符串所表示的值小于目标类型所能表示的)。这种行为曾被 C++11/14 标准指定,但被 <a rel="nofollow" class="external text" href="https://cplusplus.github.io/LWG/issue1169">LWG1169</a> 更正。</p>
|
|
<p>因为阶段 2 滤出如 <span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="st0">'p'</span></span></span> 、 <span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="st0">'N'</span></span></span> 或 <span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="st0">'i'</span></span></span> 的字符,如 <span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="st0">"0x1.23p-10"</span></span></span> 的十六进制浮点数和字符串 <span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="st0">"NaN"</span></span></span> 或 <span class="t-c"><span class="mw-geshi cpp source-cpp"><span class="st0">"inf"</span></span></span> 可能为 <code>do_get(double)</code> 所拒绝,即使它们它们是对 <code>strtod</code> 的合法输入:此为 <a rel="nofollow" class="external text" href="https://cplusplus.github.io/LWG/issue2381">LWG 问题 2381</a> 。</p>
|
|
<h3><span class="mw-headline" id=".E7.A4.BA.E4.BE.8B">示例</span></h3>
|
|
<div class="t-example">
|
|
<p>用户定义类型的 <span class="t-lc">operator>></span> 实现。</p>
|
|
<div class="t-example-live-link"></div>
|
|
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
|
<div class="cpp source-cpp">
|
|
<pre class="de1"><span class="co2">#include <iostream></span>
|
|
<span class="co2">#include <iterator></span>
|
|
<span class="co2">#include <locale></span>
|
|
|
|
<span class="kw1">struct</span> base <span class="br0">{</span> <span class="kw4">long</span> x<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> CharT, <span class="kw1">class</span> Traits<span class="sy1">></span>
|
|
<a href="cpp-io-basic_istream.html"><span class="kw1713">std::<span class="me2">basic_istream</span></span></a><span class="sy1"><</span>CharT, Traits<span class="sy1">></span><span class="sy3">&</span>
|
|
operator <span class="sy1">>></span><span class="br0">(</span><a href="cpp-io-basic_istream.html"><span class="kw1713">std::<span class="me2">basic_istream</span></span></a><span class="sy1"><</span>CharT, Traits<span class="sy1">></span><span class="sy3">&</span> is,
|
|
base<span class="sy3">&</span> b<span class="br0">)</span>
|
|
<span class="br0">{</span>
|
|
<a href="cpp-io-ios_base-iostate.html"><span class="kw1697">std::<span class="me2">ios_base</span><span class="sy4">::</span><span class="me2">iostate</span></span></a> err <span class="sy1">=</span> <a href="cpp-io-ios_base-iostate.html"><span class="kw1698">std::<span class="me2">ios_base</span><span class="sy4">::</span><span class="me2">goodbit</span></span></a><span class="sy4">;</span>
|
|
<span class="kw1">try</span> <span class="co1">// 设置 err 为能抛出</span>
|
|
<span class="br0">{</span>
|
|
<span class="kw1">typename</span> <a href="cpp-io-basic_istream.html"><span class="kw1713">std::<span class="me2">basic_istream</span></span></a><span class="sy1"><</span>CharT, Traits<span class="sy1">></span><span class="sy4">::</span><span class="me2">sentry</span> s<span class="br0">(</span>is<span class="br0">)</span><span class="sy4">;</span>
|
|
|
|
<span class="kw1">if</span> <span class="br0">(</span>s<span class="br0">)</span> <span class="co1">// 若流已为输入就绪</span>
|
|
<span class="br0">{</span>
|
|
<a href="cpp-locale-use_facet.html"><span class="kw1897">std::<span class="me2">use_facet</span></span></a><span class="sy1"><</span><a href="cpp-locale-num_get.html"><span class="kw1955">std::<span class="me2">num_get</span></span></a><span class="sy1"><</span>CharT<span class="sy1">>></span><span class="br0">(</span>is.<span class="me1">getloc</span><span class="br0">(</span><span class="br0">)</span><span class="br0">)</span>.<span class="me1">get</span><span class="br0">(</span>is, <span class="br0">{</span><span class="br0">}</span>, is, err, b.<span class="me1">x</span><span class="br0">)</span><span class="sy4">;</span>
|
|
<span class="br0">}</span>
|
|
<span class="br0">}</span> <span class="kw1">catch</span><span class="br0">(</span><a href="cpp-io-ios_base-failure.html"><span class="kw1670">std::<span class="me2">ios_base</span><span class="sy4">::</span><span class="me2">failure</span></span></a><span class="sy3">&</span> error<span class="br0">)</span>
|
|
<span class="br0">{</span>
|
|
<span class="co1">// 处理异常</span>
|
|
<span class="br0">}</span>
|
|
<span class="kw1">return</span> is<span class="sy4">;</span>
|
|
<span class="br0">}</span>
|
|
|
|
<span class="kw4">int</span> main<span class="br0">(</span><span class="br0">)</span>
|
|
<span class="br0">{</span>
|
|
base b<span class="sy4">;</span>
|
|
|
|
<a href="cpp-io-cin.html"><span class="kw1756">std::<span class="me2">cin</span></span></a> <span class="sy1">>></span> b<span class="sy4">;</span>
|
|
<span class="br0">}</span></pre></div>
|
|
</div>
|
|
</div>
|
|
<h3><span class="mw-headline" id=".E7.BC.BA.E9.99.B7.E6.8A.A5.E5.91.8A">缺陷报告</span></h3>
|
|
<p>下列更改行为的缺陷报告追溯地应用于以前出版的 C++ 标准。</p>
|
|
<table class="dsctable" style="font-size:0.8em">
|
|
<tr>
|
|
<th>DR</th>
|
|
<th>应用于</th>
|
|
<th>出版时的行为</th>
|
|
<th>正确行为</th>
|
|
</tr>
|
|
<tr>
|
|
<td><a rel="nofollow" class="external text" href="https://cplusplus.github.io/LWG/issue23">LWG 23</a></td>
|
|
<td>C++98</td>
|
|
<td>溢出的输入导致未定义行为</td>
|
|
<td>处理溢出</td>
|
|
</tr>
|
|
<tr>
|
|
<td><a rel="nofollow" class="external text" href="https://cplusplus.github.io/LWG/issue696">LWG 696</a></td>
|
|
<td>C++98</td>
|
|
<td>转换失败时不更改结果</td>
|
|
<td>设为零</td>
|
|
</tr>
|
|
<tr>
|
|
<td><a rel="nofollow" class="external text" href="https://cplusplus.github.io/LWG/issue1169">LWG 1169</a></td>
|
|
<td>C++98</td>
|
|
<td>溢出处理在不同浮点类型间不一致</td>
|
|
<td>使得与 <code>strtof</code>/<code>strtod</code> 一致</td>
|
|
</tr>
|
|
</table>
|
|
<h3><span class="mw-headline" id=".E5.8F.82.E9.98.85">参阅</span></h3>
|
|
<table class="t-dsc-begin">
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-io-basic_istream-operator_gtgt.html"><span class="t-lines"><span>operator>></span></span></a></div>
|
|
</div>
|
|
</td>
|
|
<td>提取带格式数据<br />
|
|
<span class="t-mark">(<code>std::basic_istream<CharT,Traits></code> 的公开成员函数)</span></td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
<div class="visualClear"></div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</body>
|
|
</html>
|