num_get::get

Extrae un numérico o un valor booleano de una secuencia 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
    El inicio del intervalo de los caracteres de los que para leer el número.

  • _Last
    El final del intervalo de los caracteres de los que para leer el número.

  • _Iosbase
    ios_base cuyos indicadores son utilizados por la conversión.

  • _State
    El estado al que el failbit (vea ios_base:: iostate) se agrega al error.

  • _Val
    Valor que se ha leído.

Valor devuelto

El iterador después del valor se ha leído.

Comentarios

Todas las funciones do_getreturn (_First, _Last, _Iosbase, _State, _Val) del miembro.

La primera función protegida miembro virtual intenta hacer coincidir los elementos secuenciales que comienzan en primero en la secuencia [_First, _Last) hasta que haya reconocido un campo de entrada entero rellenada, no vacío.Si es correcto, convierte este campo a su valor equivalente como Más escrito y almacena el resultado en _Val.Devuelve un iterador que designa el primer elemento más allá del campo de entrada numérico.si no, la función no almacena nada en _Val y establece ios_base::failbit en _State.Devuelve un iterador que designa el primer elemento más allá de cualquier prefijo de un campo de entrada entero válido.En cualquier caso, si el valor devuelto es igual a último, la función establece ios_base::eofbit en _State.

El campo de entrada entero se convierte en las mismas reglas que las funciones de análisis para buscar y convertir una serie de elementos de char de un archivo.Cada uno de estos elementos de char es supone para asignar un elemento equivalente de CharType escrito por un simple, asignación unívoca.Se determina la especificación de conversión equivalente de análisis como sigue:

  • Si iosbase.flagsy ==ios_base::basefield octios_base::, la especificación de conversión es el.

  • si iosbase.flags y ios_base**:: el hexadecimal ==** de basefieldios_base::, la especificación de conversión es lx.

  • si iosbase.flags y ios_base**:: ==** 0 de basefield, la especificación de conversión es.li

  • si no, la especificación de conversión es ld.

El formato de un campo de entrada entero se resuelve adicional por faceta de configuración regional fac devuelto por la llamada use_facet <numpunct<Elem> (iosbase.getloc).De manera específica:

  • fac.el agrupar determina cómo los dígitos se agrupan a la izquierda del separador decimal.

  • fac.thousands_sep determina la secuencia que separa los grupos de dígitos a la izquierda del separador decimal.

Si ninguna instancia de fac.thousands_sep aparece en el campo de entrada numérico, ninguna agrupación que se impone la restricción.Si no, cualquier restricción de agrupación impuso por fac. se aplicael agrupar y se quitan los separadores antes de la conversión de análisis aparece.

La segunda función protegida miembro 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 igual que el primero, salvo que reemplaza una especificación de conversión de ld con lu.Si es correcta, convierte el campo de entrada numérico a un valor de unsigned long escrito y almacena el valor en _Val.

La tercera función protegida miembro virtual:

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

se comporta igual que el primero, salvo que intenta hacer coincidir un campo de entrada flotante completo, no vacío.fac.decimal_point determina la secuencia que separa los dígitos integrales de los dígitos de fracción.El especificador equivalente de conversión de análisis es LF.

La cuarta función protegida miembro virtual:

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

se comportará el tercero, salvo que el especificador equivalente de conversión de análisis es LF.

La quinta función protegida miembro virtual:

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

se comportará el primero, salvo que el especificador equivalente de conversión de análisis es p.

La sexta función protegida miembro virtual:

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

se comporta igual que el primero, salvo que intenta hacer coincidir un campo de entrada boolean completo, no vacío.Si correctamente convierte el campo de entrada boolean en un valor de bool escrito y almacena el valor en _Val.

Un campo de entrada boolean toma uno de dos formas.Si iosbase.flags y el boolalphaios_base::es false**,** es igual que un campo de entrada entero, salvo que el valor convertido debe ser 0 (para false**) o** 1 (**true).**Si no, la secuencia debe coincidir con cualquier fac.falsename (para Falso), o fac.truename (para TRUE).

Ejemplo

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

Requisitos

encabezado: <configuración regional>

espacio de nombres: std

Vea también

Referencia

num_get Class