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>(iosbasegetloc)。 尤其是在下列情况下:

  • fac分组 确定数值如何在小数点左边任何组合。

  • facthousands_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;

行为与第一个相同,但尝试与完全非空,浮点输入字段。 facdecimal_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 和存储。

布尔值输入字段具有两种形式之一。 如果 iosbaseflags &ios_base::boolalphafalse,这是与为整数输入域,除此之外,转换的值必须是 0 (对于 false) 或 1 (对于 true)。 否则,匹配序列必须任何 facfalsename (对于 false),或 factruename (对于 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

请参见

参考

num_get 类