num_put::do_put
Una funzione virtuale denominata per convertire un numero in una sequenza charoggetti che rappresenta il numero viene formattato per le impostazioni locali.
virtual iter_type do_put(
iter_type _Dest,
ios_base& _Iosbase,
_Elem _Fill,
bool _Val
) const;
virtual iter_type do_put(
iter_type _Dest,
ios_base& _Iosbase,
_Elem _Fill,
long _Val
) const;
virtual iter_type do_put(
iter_type _Dest,
ios_base& _Iosbase,
_Elem _Fill,
unsigned long _Val
) const;
virtual iter_type do_put(
iter_type _Dest,
ios_base& _Iosbase,
_Elem _Fill,
double _Val
) const;
virtual iter_type do_put(
iter_type _Dest,
ios_base& _Iosbase,
_Elem _Fill,
long double _Val
) const;
virtual iter_type do_put(
iter_type _Dest,
ios_base& _Iosbase,
_Elem _Fill,
const void * _Val
) const;
virtual iter_type do_put(
iter_type _Dest,
ios_base& _Iosbase,
_Elem _Fill,
const long long _Val
) const; virtual iter_type do_put(
iter_type _Dest,
ios_base& _Iosbase,
_Elem _Fill,
const unsigned long long _Val
) const;
Parametri
_Next
Un iteratore destinato al primo elemento della stringa immessa._Iosbase
È specificato il flusso che contiene le impostazioni locali con un facet di numpunct utilizzato per questo output e flags per formattare l'output._Fill
Un carattere utilizzato per la spaziatura._Val
Il numero o il tipo booleano che deve essere restituito.
Valore restituito
Un iteratore di output gli indirizzi che una posizione oltre l'ultimo elemento ha prodotto.
Note
La prima funzione membro virtuale protetta genera elementi sequenziali che iniziano a _Next per produrre un campo di output Integer dal valore _Val.La funzione restituisce un iteratore che definisce il posto seguente per inserire un elemento oltre il campo di output generato Integer.
Il campo di output Integer viene generato in base alle stesse regole utilizzate dalle funzioni di stampa per generare una serie di elementi char in 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.Dove una funzione di stampa anteposti un campo con o spazi o la cifra 0, tuttavia, do_put ma utilizza fill.La specifica di conversione equivalenti di stampa è 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.
In caso contrario, la specifica di conversione è ld.
Se iosbase.larghezza è diverso da zero, larghezza del campo di questo valore viene anteposto.La funzione chiama quindi iosbase.width(0) per reimpostare la larghezza del campo a zero.
Il riempimento si verifica solo se il numero minimo di elementi N richiesto di specificare il campo di output è minore iosbase.larghezza.Tale riempimento è costituito da una sequenza di N – copie widthfill.Spaziatura interna quindi è il seguente:
Se iosbase.flags & == ios_base::sinistrodi ios_base::adjustfield, il flag – viene anteposto.(Riempimento si verifica dopo che il testo generato.)
Se iosbase.flags & == ios_base::internodi ios_base::adjustfield, il flag 0 viene anteposto.(Per un campo di output numerico, spaziatura interna si verifica quando il cuscinetto di funzioni di stampa con 0).
In caso contrario, nessun flag aggiuntivo viene anteposto.(Riempimento si verifica prima che la sequenza generata.)
Infine:
Se iosbase.flags & ios_base::showpos è diverso da zero, il flag + viene anteposto alla specifica di conversione.
Se iosbase.flags & ios_base::showbase è diverso da zero, il flag # viene anteposto alla specifica di conversione.
Il formato di un campo di output 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 vincolo di raggruppamento viene imposto da fac.grouping (il primo elemento è il valore CHAR_MAX), quindi nessun istanze fac.thousands_sep viene generato nel campo di output.In caso contrario, i separatori vengono inserite dopo la conversione di stampa si verifica.
La seconda funzione membro virtuale protetta:
virtual iter_type do_put(iter_type _Next, ios_base& _Iosbase,
CharType _Fill, unsigned long _Val) const;
si comporta come il primo, con la differenza che sostituisce una specifica di conversione ld con lu.
La terza funzione membro virtuale protetta:
virtual iter_type do_put(iter_type _Next, ios_base& _Iosbase,
CharType _Fill, double _Val) const;
si comporta come il primo, ma produce un campo di output a virgola mobile dal valore val.fac.decimal_point determina la sequenza che separa le cifre intere da quelle della frazione.La specifica di conversione equivalenti di stampa è determinato come segue:
Se iosbase.flags & == ios_base::fissodi ios_base::floatfield, la specifica di conversione è lf.
Se iosbase.flags & == ios_base::scientificodi ios_base::floatfield, la specifica di conversione è le.Se iosbase.flags & ios_base::maiuscolo è diverso da zero, e viene sostituita dalla E.
In caso contrario, la specifica di conversione è lg.Se iosbase.flags & ios_base::uppercase è diverso da zero, g viene sostituito con il G.
Se iosbase.flags & ios_base::fixed è diverso da zero o se iosbase.precisione è maggiore di zero, con una precisione il valore iosbase.precision viene anteposto alla specifica di conversione.Il riempimento si comporta lo stesso di un campo di output Integer.Il carattere di spaziatura interna è fill.Infine:
Se iosbase.flags & ios_base::showpos è diverso da zero, il flag + viene anteposto alla specifica di conversione.
Se iosbase.flags & ios_base::showpoint è diverso da zero, il flag # viene anteposto alla specifica di conversione.
La quarta funzione membro virtuale protetta:
virtual iter_type do_put(iter_type _Next, ios_base& _Iosbase,
CharType _Fill, long double _Val) const;
si comporta lo stesso terzo argomento, ad eccezione del qualificatore l nella specifica di conversione è sostituito da l ".
La quinta funzione membro virtuale protetta:
virtual iter_type do_put(iter_type _Next, ios_base& _Iosbase,
CharType _Fill, const void *_Val) const;
si comporta lo stesso la prima, con la differenza che la specifica di conversione è p**,** più il qualificatore necessario per specificare spaziatura interna.
La sesta funzione membro virtuale protetta:
virtual iter_type do_put(iter_type _Next, ios_base& _Iosbase,
CharType _Fill, bool _Val) const;
si comporta come il primo, tranne per il fatto che genera un campo di output booleano per _Val.
Un campo di output booleano accetta una delle due forme.Se iosbase.flags & ios_base::boolalpha è false, restituisce do_put(_Next, _Iosbase, _Fill,LONG()_Val) della funzione membro, che produce in genere una sequenza generata a 0 (per false) o 1 (per true).In caso contrario, la sequenza generata un'eccezione è un fac.falsename) ad false), o fac.truename ad true).
La settima funzione membro virtuale protetta:
virtual iter_type do_put(iter_type next, ios_base& iosbase,
Elem fill, long long val) const;
si comporta come il primo, con la differenza che sostituisce una specifica di conversione ld con lld.
Il ottava funzione membro virtuale protetta:
virtual iter_type do_put(iter_type next, ios_base& iosbase,
Elem fill, unsigned long long val) const;
si comporta come il primo, con la differenza che sostituisce una specifica di conversione ldcon llu.
Esempio
Vedere l'esempio relativo inserito, che chiama do_put.
Requisiti
intestazione: <locale>
Spazio dei nomi: deviazione standard