Condividi tramite


num_get::get

Estrae un tipo numerico o un valore booleano da una sequenza di caratteri.

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;

Parametri

  • _First
    L'inizio dell'intervallo di caratteri da cui leggere il numero.

  • _Last
    La fine dell'intervallo di caratteri da cui leggere il numero.

  • _Iosbase
    ios_base dei flag utilizzati dalla conversione.

  • _State
    Lo stato a cui il failbit (vedere ios_base::iostate) viene aggiunto in errore.

  • _Val
    Valore letto.

Valore restituito

Un iteratore dopo che il valore è stato letto.

Note

Tutte le funzioni membro do_getdi ritorno (_First, _Last, _Iosbase, _State, _Val).

La prima funzione membro virtuale protetta tenta di individuare gli elementi sequenziali che avvia innanzitutto nella sequenza [_First, _Last) finché non viene riconosciuto un campo di input Integer completo e non vuoto.Se eseguita correttamente, converte questo campo nel valore equivalente come tipo LONG e archivia il risultato in _Val.Restituisce un iteratore che definisce il primo elemento oltre il campo di input numerico.In caso contrario, la funzione non contiene alcuna operazione in _Val e imposta ios_base::failbit in _State.Restituisce un iteratore che definisce il primo elemento a qualsiasi prefisso di un campo di input Integer valido.In entrambi i casi, se il valore restituito corrisponde ultimo, la funzione imposta ios_base::eofbit in _State.

Il campo di input Integer viene convertito in base alle stesse regole utilizzate dalle funzioni di funzionalità per associare e convertire una serie di elementi char da un file.Ciascun elemento char viene utilizzato per eseguire il mapping a un elemento equivalente di tipo char da un mapping uno-a-uno semplice e.La specifica di conversione equivalenti di funzionalità è determinato come segue:

  • Se iosbase.flag & == ios_base::Ottdi ios_base::basefield, la specifica di conversione è lo.

  • Se iosbase.flags & == ios_base::esadecimalidi ios_base::basefield, la specifica di conversione è lx.

  • Se iosbase.flags & == 0 ios_base::basefield, la specifica di conversione è li.

  • In caso contrario, la specifica di conversione è ld.

Il formato di un campo di input Integer ulteriormente è determinato da i facet delle impostazioni localifac restituito dalla chiamata use_facet <numpunct<Elem> (iosbase.getloc).In particolare:

  • fac.il raggruppamento determina quali le cifre vengono raggruppate a sinistra del separatore decimale.

  • fac.thousands_sep determina la sequenza che separa i gruppi di cifre a sinistra del separatore decimale.

Se nessun istanze fac.thousands_sep si verifica nel campo di input numerico, alcun vincolo di raggruppamento viene imposto.In caso contrario, tutti i vincoli di raggruppamento hanno imposto da fac.grouping viene applicato e separatori vengono rimossi prima della conversione di scansione si verifichi.

La seconda funzione membro virtuale protetta:

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

si comporta come il primo, con la differenza che sostituisce una specifica di conversione ld con lu.Se l'operazione riesce, nel campo di input numerico a un valore di tipo unsigned long e gli archivi tale valore in _Val.

La terza funzione membro virtuale protetta:

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

si comporta come il primo, con la differenza che tenta di trovare una corrispondenza tra un campo di input a virgola mobile completo e non vuoto.fac.decimal_point determina la sequenza che separa le cifre intere da quelle della frazione.L'identificatore equivalente di conversione di funzionalità è lf.

La quarta funzione membro virtuale protetta:

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

si comporta lo stesso terzo, ma l'identificatore equivalente di conversione di funzionalità è Lf.

La quinta funzione membro virtuale protetta:

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

si comporta lo stesso il primo, ma l'identificatore equivalente di conversione di scansione. è P.

La sesta funzione membro virtuale protetta:

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

si comporta come il primo, con la differenza che tenta di confrontare un campo di input booleano completo e non vuoto.Se impossibile convertire il campo di input booleano a un valore di tipo bool e gli archivi tale valore in _Val.

Un campo di input booleano accetta una delle due forme.Se iosbase.flags & ios_base::boolalpha è false, corrisponde a un campo di input Integer, ad eccezione del valore convertito deve essere 0 (per false1) o (per true).In caso contrario, la sequenza deve corrispondere a qualsiasi fac.falsename ad false), o fac.truename ad true).

Esempio

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

Requisiti

intestazione: <locale>

Spazio dei nomi: deviazione standard

Vedere anche

Riferimenti

num_get Class