num_get::get
从字符序列的数字或布尔值。
iter_type get(
iter_type _First,
iter_type _Last,
ios_base& _Iosbase,
ios_base::iostate& _State,
bool& _Val
) const;
iter_type get(
iter_type _First,
iter_type _Last,
ios_base& _Iosbase,
ios_base::iostate& _State,
unsigned short& _Val
) const;
iter_type get(
iter_type _First,
iter_type _Last,
ios_base& _Iosbase,
ios_base::iostate& _State,
unsigned int& _Val
) const;
iter_type get(
iter_type _First,
iter_type _Last,
ios_base& _Iosbase,
ios_base::iostate& _State,
long& _Val
) const;
iter_type get(
iter_type _First,
iter_type _Last,
ios_base& _Iosbase,
ios_base::iostate& _State,
unsigned long& _Val
) const;
iter_type get(
iter_type _First,
iter_type _Last,
ios_base& _Iosbase,
ios_base::iostate& _State,
long long& _Val
) const;
iter_type get(
iter_type _First,
iter_type _Last,
ios_base& _Iosbase,
ios_base::iostate& _State,
unsigned long long& _Val
) const;
iter_type get(
iter_type _First,
iter_type _Last,
ios_base& _Iosbase,
ios_base::iostate& _State,
float& _Val
) const;
iter_type get(
iter_type _First,
iter_type _Last,
ios_base& _Iosbase,
ios_base::iostate& _State,
double& _Val
) const;
iter_type get(
iter_type _First,
iter_type _Last,
ios_base& _Iosbase,
ios_base::iostate& _State,
long double& _Val
) const;
iter_type get(
iter_type _First,
iter_type _Last,
ios_base& _Iosbase,
ios_base::iostate& _State,
void *& _Val
) const;
参数
_First
范围的起始值的读取字符的数字。_Last
范围的结束读取字符的数字。_Iosbase
转换使用的 ios_base。_State
failbit 的状态 (请参见 ios_base::iostate) 添加处理失败。_Val
读取的值。
返回值
在值将来的迭代器。
备注
所有成员函数返回 do_get(_First、_Last、_Iosbase、_State,_Val)。
第虚拟的受保护成员函数尝试匹配序列开始。首先 [_First,_Last) 的时序组件,直到 Dictionary/Words/Recognized 完整,非空的整数输入字段。 如果成功,它转换此字段对其为类型 long 的等效值并存储在 _Val的结果。 它返回指定除数值输入域之外的迭代器的第一个元素。 否则,函数没有存储 _Val 中并将_State 的 ios_base::failbit。 它返回指定了有效的整数输入域的任何前缀的迭代器。第一个元素。 在任何情况下,如果,返回值等于 last函数,设置 _State的 ios_base::eofbit。
整数输入域通过扫描函数使用的规则相同转换搜索和转换一系列 char 元素从文件。 每个这样 char 元素由简单,一对一的映射假定映射到 CharType 类型的等效元素。 确定等效的扫描规范转换如下:
如果 iosbase。标志 &ios_base::basefield == ios_base::10 月规范,转换为 lo。
如果 iosbase.flags &ios_base::basefield == ios_base::hex规范,转换为 lx。
如果 iosbase.flags &ios_base::basefield == 0 规范,转换为 li。
否则,将规范为 ld。
区域设置方面进一步确定整数输入字段的格式返回的fac 调用 use_facet <numpunct<Elem>(iosbase。getloc)。 尤其是在下列情况下:
fac。分组 确定数值如何在小数点左边任何组合。
fac。thousands_sep 确定在小数点左边数字分隔任何组的序列。
如果 fac不存在实例。thousands_sep 中数字输入字段,对的约束不分组结果。 否则,分组约束由 fac对。分组 强制,并且移除分隔符,扫描在转换之前发生。
第二个虚拟的受保护成员函数:
virtual iter_type do_get(iter_type _First, iter_type _Last,
ios_base& _Iosbase, ios_base::iostate& _State,
unsigned long& _Val) const;
行为与第一个相同,不同之处在于,它用 lu替换 ld 的转换规范。 如果成功,则 _Val值以转换数字输入域对值类型 unsigned long 和存储。
第三虚拟的受保护成员函数:
virtual iter_type do_get(iter_type _First, iter_type _Last,
ios_base& _Iosbase, ios_base::iostate& _State,
double& _Val) const;
行为与第一个相同,但尝试与完全非空,浮点输入字段。 fac。decimal_point 确定从部分数字分隔整数数字的序列。 扫描说明符等效转换为 lf。
第四个虚的受保护成员函数:
virtual iter_type do_get(iter_type _First, iter_type _Last,
ios_base& _Iosbase, ios_base::iostate& _State,
long double& _Val) const;
同样正常运行第三,扫描说明符等效的,只不过转换为 Lf。
第五虚拟的受保护成员函数:
virtual iter_type do_get(iter_type _First, iter_type _Last,
ios_base& _Iosbase, ios_base::iostate& _State,
void *& _Val) const;
的第一行为,除此之外,此说明符等效的扫描转换为 p。
第六虚拟的受保护成员函数:
virtual iter_type do_get(iter_type _First, iter_type _Last,
ios_base& _Iosbase, ios_base::iostate& _State,
bool& _Val) const;
行为与第一个相同,但尝试与完全非空,布尔输入字段。 如果成功在 _Val值的转换该布尔输入域对值类型 bool 和存储。
布尔值输入字段具有两种形式之一。 如果 iosbase。flags &ios_base::boolalpha 为 false,这是与为整数输入域,除此之外,转换的值必须是 0 (对于 false) 或 1 (对于 true)。 否则,匹配序列必须任何 fac。falsename (对于 false),或 fac。truename (对于 true)。
示例
// num_get_get.cpp
// compile with: /EHsc
#include <locale>
#include <iostream>
#include <sstream>
using namespace std;
int main( )
{
locale loc( "german_germany" );
basic_stringstream<char> psz, psz2;
psz << "-1000,56";
ios_base::iostate st = 0;
long double fVal;
cout << use_facet <numpunct <char> >(loc).thousands_sep( ) << endl;
psz.imbue( loc );
use_facet <num_get <char> >
(loc).get( basic_istream<char>::_Iter( psz.rdbuf( ) ),
basic_istream<char>::_Iter(0), psz, st, fVal );
if ( st & ios_base::failbit )
cout << "money_get( ) FAILED" << endl;
else
cout << "money_get( ) = " << fVal << endl;
}
Output
.
money_get( ) = -1000.56
要求
页眉: <区域设置>
命名空间: std