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