num_get::do_get

对提取以字符序列的数字或布尔值的虚函数。

virtual iter_type do_get(
    iter_type _First,
    iter_type _Last,
    ios_base& _Iosbase,
    ios_base::iostate& _State,
    long& _Val
) const;virtual iter_type do_get(
    iter_type _First,
    iter_type _Last,
    ios_base& _Iosbase,
    ios_base::iostate& _State,
    unsigned short& _Val
) const;
virtual iter_type do_get(
    iter_type _First,
    iter_type _Last,
    ios_base& _Iosbase,
    ios_base::iostate& _State,
    unsigned int& _Val
) const;
virtual iter_type do_get(
    iter_type _First,
    iter_type _Last,
    ios_base& _Iosbase,
    ios_base::iostate& _State,
    unsigned long& _Val
) const;
virtual iter_type do_get(
    iter_type _First, 
    iter_type _Last,
    ios_base& _Iosbase, 
    ios_base::iostate& _State,
    long long& _Val
) const;
virtual iter_type do_get(
    iter_type _First, 
    iter_type _Last,
    ios_base& _Iosbase, 
    ios_base::iostate& _State,
    unsigned long long& _Val
) const;
virtual iter_type do_get(
    iter_type _First,
    iter_type _Last,
    ios_base& _Iosbase,
    ios_base::iostate& _State,
    float& _Val
) const;
virtual iter_type do_get(
    iter_type _First,
    iter_type _Last,
    ios_base& _Iosbase,
    ios_base::iostate& _State,
    double& _Val
) const;
virtual iter_type do_get(
    iter_type _First,
    iter_type _Last,
    ios_base& _Iosbase,
    ios_base::iostate& _State,
    long double& _Val
) const;
virtual iter_type do_get(
    iter_type _First,
    iter_type _Last,
    ios_base& _Iosbase,
    ios_base::iostate& _State,
    void *& _Val
) const;
virtual iter_type do_get(
    iter_type _First,
    iter_type _Last,
    ios_base& _Iosbase,
    ios_base::iostate& _State,
    bool& _Val
) const;

参数

  • _First
    字符范围的开头的读取数字的。

  • _Last
    字符范围的末尾的读取数字的。

  • _Iosbase
    转换使用标志的 ios_base

  • _State
    failbit的状态(请参见 ios_base::iostate)添加在失败。

  • _Val
    读取的值。

返回值

迭代器,该值读取之后。

备注

第一个虚拟保护的成员函数,

virtual iter_type do_get(

iter_type _First,

iter_type _Last,

ios_base& _Iosbase,

ios_base::iostate& _State,

long& _Val

) const;

与开始在序列 [_First,_Last) 的 _First 的时序组件,直到识别的完整,非空的整数输入字段。如果成功,则会在 _Val将此字段转换为与之等效的值为类型 long, 并存储结果。它返回指定在数字输入字段之外的迭代器第一个元素。否则,该功能在 _Val 不存储并在 state的 ios_base::failbit。它返回指定在有效的整数输入字段的所有书名之外的迭代器第一个元素。无论如何,则为;返回值等于 last,该函数将 state的 ios_base::eofbit。

整数输入字段中扫描函数使用的规则相同转换为与并将一系列 char 元素从文件。(每个这样 char 元素由简单假定映射到类型 Elem 的一个对应的元素,对,映射到。)确定等效扫描转换规范如下所示:

如果 iosbase.ios_base::flags() & ios_base::basefield == ios_base::十月,转换规范是 lo。

如果 iosbase.flags() & ios_base::basefield == ios_base::hex,转换规范是 lx。

如果 iosbase.flags() & ios_base::basefield == 0,转换规范是 li。

否则,将规范是 ld。

区域设置方面进一步取决于整数输入字段的格式调用返回的facuse_facet<numpunct<Elem>(iosbase.ios_base::getloc())。尤其是在下列情况下:

fac.numpunct::grouping() 确定num如何在任何左侧分组小数点

fac.numpunct::thousands_sep() 确定在任何左侧分隔数字组小数点的序列。

如果 fac.thousands_sep() 实例不在数字输入字段时,不会分组的约束。否则,fac.grouping() 强加的所有分组的约束是强制的,并移除分隔符,在扫描转换发生之前。

第四个虚保护的成员函数:

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,

long long& _Val

) const;

的行为与第一个相同,不同之处在于,它将 lld替换 ld 的转换规范。如果成功在 _Val值的该转换数字输入字段转换为类型 long long 的值和存储。

第六个虚拟保护的成员函数:

virtual iter_type do_get(

iter_type _First,

iter_type _Last,

ios_base& _Iosbase,

ios_base::iostate& _State,

unsigned long long& _Val

) const;

的行为与第一个相同,不同之处在于,它将 llu替换 ld 的转换规范。如果成功在 _Val值的该转换数字输入字段转换为类型 unsigned long long 的值和存储。

第七个虚拟保护的成员函数:

virtual iter_type do_get(

iter_type _First,

iter_type _Last,

ios_base& _Iosbase,

ios_base::iostate& _State,

float& _Val

) const;

的行为与第一个相同,除此之外,竭力与完整,非空的浮点输入字段。fac.numpunct::decimal_point() 确定从部分数字分隔整数位数的序列。等效扫描转换说明符是 lf。

第八个虚拟保护的成员函数:

virtual iter_type do_get(

iter_type _First,

iter_type _Last,

ios_base& _Iosbase,

ios_base::iostate& _State,

double& _Val

) const;

的行为与第一个相同,除此之外,竭力与完整,非空的浮点输入字段。fac.numpunct::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 的值和存储。

boolean输入字段采用两种形式之一。如果 iosbase.flags() & ios_base::boolalpha 为false,则尽可能为整数输入字段,除此之外,该转换的值必须是0 (对于错误)或1 (对于true)。否则,顺序必须与 fac.numpunct::falsename() (用于错误),或者 fac.numpunct::truename() (为true)。

示例

获取参见示例,虚拟成员函数由 do_get调用。

要求

标头: <locale>

命名空间: std

请参见

参考

num_get Class