Compartilhar via


num_get::get

Extrai um tipo numérico ou um valor Booleano de uma seqüência de caracteres.

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;

Parâmetros

  • _First
    O início do intervalo de caracteres de que para ler o número.

  • _Last
    A o final do intervalo de caracteres de que para ler o número.

  • _Iosbase
    ios_base cujos os sinalizadores são usados pela conversão.

  • _State
    O estado em que o failbit (consulte ios_base::iostate) é adicionado em cima de falha.

  • _Val
    O valor que foi lido.

Valor de retorno

O iterador após o valor foi lido.

Comentários

Todas as funções de membro do_getde retorno (_First, _Last, _Iosbase, _State, _Val).

A primeira função de membro protegida virtual tenta corresponder aos elementos seqüenciais que começam primeiro na seqüência [_First, _Last) até que reconhece um campo completo, não vazio de entrada inteiro.Se com êxito, ele converte este campo em seu valor equivalente como o tipo long e armazena o resultado em _Val.Retorna um iterador que designa o primeiro elemento além de campo numérico de entrada.Caso contrário, a função não armazena nada em _Val e defina ios_base::failbit em _State.Retorna um iterador que designa o primeiro elemento além de qualquer prefixo de um campo válido de entrada inteiro.Em ambos os casos, se o valor de retorno é igual last, a função define ios_base::eofbit em _State.

O campo de entrada inteiro é convertido pelas mesmas regras usadas pelas funções de verificação correspondentes e chamando uma série de elementos de char de um arquivo.Cada tal elemento de char é assumido mapear para um elemento equivalente de tipo CharType por um mapeamento simples, linear.A especificação de conversão equivalente de verificação é determinado como segue:

  • Se iosbase.sinalizadores & o == ios_base::octde ios_base::basefield , a especificação de conversão são lo.

  • Se iosbase.flags & o == ios_base::hexde ios_base::basefield , a especificação de conversão são lx.

  • Se iosbase.flags & o == 0 de ios_base::basefield , a especificação de conversão são li.

  • Caso contrário, a especificação de conversão é ld.

O formato de um campo de entrada inteiro é determinado por aspecto da localidademaisfac retornado pela chamada use_facet <numpunct<Elem> (iosbase.getloc).Especificamente:

  • fac.clustering determina como os dígitos à esquerda são agrupados de um ponto decimal.

  • fac.thousands_sep determina a seqüência que separa grupos de dígitos à esquerda de um ponto decimal.

Se quaisquer instâncias de fac.thousands_sep ocorre no campo numérico de entrada, nenhum agrupamento que a restrição é aplicada.Caso contrário, todas as restrições de agrupamento aplicada por fac.grouping é imposta e separadores são removidos antes da conversão de verificação ocorra.

a segunda função de membro protegida virtual:

virtual iter_type do_get(iter_type _First, iter_type _Last,
    ios_base& _Iosbase, ios_base::iostate& _State,
        unsigned long& _Val) const;

se comporta o mesmo que o primeiro, exceto que substitui uma especificação de conversão de ld com lu.Se com êxito, convertem o campo numérico de entrada um valor do tipo unsigned long e armazena o valor em _Val.

a terceira função de membro protegida virtual:

virtual iter_type do_get(iter_type _First, iter_type _Last,
    ios_base& _Iosbase, ios_base::iostate& _State,
        double& _Val) const;

se comporta o mesmo que o primeiro, exceto que tenta corresponder um campo de ponto flutuante completo, não vazio de entrada.fac.decimal_point determina a seqüência que separa os dígitos inteiro dos dígitos da fração.O especificador equivalente de conversão de verificação é lf.

a quarta função de membro protegida virtual:

virtual iter_type do_get(iter_type _First, iter_type _Last,
    ios_base& _Iosbase, ios_base::iostate& _State,
        long double& _Val) const;

se comporta o mesmo o terceiro, exceto que o especificador equivalente de conversão de verificação é Lf.

a quinta função de membro protegida virtual:

virtual iter_type do_get(iter_type _First, iter_type _Last,
    ios_base& _Iosbase, ios_base::iostate& _State,
        void *& _Val) const;

se comporta o mesmo o primeiro, exceto que o especificador equivalente de conversão de verificação é p.

a sexta função de membro protegida virtual:

virtual iter_type do_get(iter_type _First, iter_type _Last,
    ios_base& _Iosbase, ios_base::iostate& _State,
        bool& _Val) const;

se comporta o mesmo que o primeiro, exceto que tenta corresponder um campo booleano completo, não vazio de entrada.Se com êxito convertem o campo booleano de entrada um valor do tipo bool e armazena o valor em _Val.

Um campo booleano de entrada usa um dos dois formulários.Se iosbase.flags & ios_base::boolalpha são false, é o mesmo que um campo de entrada inteiro, exceto que o valor deve ser convertido para false0 (ou 1) para ( true).Caso contrário, a seqüência deve corresponder um ou outro fac.falsename (para false), ou fac.truename (para true).

Exemplo

// 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;
}

Saída

.
money_get( ) = -1000.56

Requisitos

Cabeçalho: <locale>

namespace: STD

Consulte também

Referência

num_get Class