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