Classe money_put
Il modello di classe descrive un oggetto che può fungere da facet delle impostazioni locali per controllare le conversioni dei valori monetari in sequenze di tipo CharType
.
Sintassi
template <class CharType,
class OutputIterator = ostreambuf_iterator<CharType>>
class money_put : public locale::facet;
Parametri
CharType
Tipo utilizzato all'interno di un programma per codificare i caratteri delle impostazioni locali.
OutputIterator
Tipo di iteratore in cui le funzioni Put monetarie scrivono il proprio output.
Osservazioni:
Come in qualsiasi facet delle impostazioni locali, l'ID dell'oggetto statico ha un valore archiviato iniziale uguale a zero. Il primo tentativo di accedere a tale valore archiviato consente di archiviare un valore positivo univoco in id.
Costruttori
Costruttore | Descrizione |
---|---|
money_put | Costruttore per oggetti di tipo money_put . |
Typedef
Nome tipo | Descrizione |
---|---|
char_type | Tipo utilizzato per descrivere un carattere utilizzato dalle impostazioni locali. |
iter_type | Tipo che descrive un iteratore di output. |
string_type | Tipo che descrive una stringa contenente caratteri di tipo CharType . |
Funzioni membro
Funzione membro | Descrizione |
---|---|
do_put | Funzione virtuale chiamata per convertire un numero o una stringa in una sequenza di caratteri che rappresenta un valore monetario. |
put | Converte un numero o una stringa in una sequenza di caratteri che rappresenta un valore monetario. |
Requisiti
Intestazione:<impostazioni locali>
Spazio dei nomi: std
money_put::char_type
Tipo utilizzato per descrivere un carattere utilizzato dalle impostazioni locali.
typedef CharType char_type;
Osservazioni:
Il tipo è un sinonimo del parametro di modello CharType.
money_put::d o_put
Funzione virtuale chiamata per convertire un numero o una stringa in una sequenza di caratteri che rappresenta un valore monetario.
virtual iter_type do_put(
iter_type next,
bool _Intl,
ios_base& _Iosbase,
CharType _Fill,
const string_type& val) const;
virtual iter_type do_put(
iter_type next,
bool _Intl,
ios_base& _Iosbase,
CharType _Fill,
long double val) const;
Parametri
next
Iteratore che punta al primo elemento della stringa inserita.
_Intl
Valore booleano che indica il tipo di simbolo di valuta previsto nella sequenza: true
se internazionale, false
se nazionale.
_Iosbase
Flag di formato che, quando impostato, indica che il simbolo di valuta è facoltativo; in caso contrario, indica che è necessario
_Riempire
Carattere usato per la spaziatura.
val
Oggetto stringa da convertire.
Valore restituito
Iteratore di output che punta alla posizione successiva all'ultimo elemento prodotto.
Osservazioni:
La prima funzione membro protetta virtuale genera elementi sequenziali a partire da accanto per produrre un campo di output monetario dal valore dell'oggetto string_type. La sequenza controllata da val deve iniziare con una o più cifre decimali, preceduta facoltativamente da un segno meno (-), che rappresenta la quantità. La funzione restituisce un iteratore che designa il primo elemento dopo il campo di output di tipo valuta generato.
La seconda funzione membro protetta virtuale si comporta come la prima, ad eccezione del fatto che converte prima di tutto val in una sequenza di cifre decimali, preceduta facoltativamente da un segno meno, quindi converte tale sequenza come sopra.
Il formato di un campo di output monetario è determinato dal facet delle impostazioni locali restituito dalla chiamata (effettiva) use_facet<moneypunct<CharType, intl>>( iosbase. getloc).
In particolare:
fac. pos_format determina l'ordine in cui i componenti del campo vengono generati per un valore non negativo.
fac. neg_format determina l'ordine in cui i componenti del campo vengono generati per un valore negativo.
fac. curr_symbol determina la sequenza di elementi da generare per un simbolo di valuta.
fac. positive_sign determina la sequenza di elementi da generare per un segno positivo.
fac. negative_sign determina la sequenza di elementi da generare per un segno negativo.
fac. grouping determina la modalità di raggruppamento delle cifre a sinistra della virgola decimale.
fac. thousands_sep determina l'elemento che separa gruppi di cifre a sinistra della virgola decimale.
fac. decimal_point determina l'elemento che separa le cifre intere dalle cifre frazionarie.
fac. frac_digits determina il numero di cifre frazionarie significative a destra della virgola decimale.
Se la stringa di segno ( fac. negative_sign
o fac. positive_sign
) ha più di un elemento, viene generato solo il primo elemento in cui l'elemento uguale a money_base::sign viene visualizzato nel modello di formato ( fac. neg_format
o fac). pos_format
Gli eventuali elementi restanti vengono generati alla fine del campo di output di tipo valuta.
Se iosbase. flags & showbase è diverso da zero, la stringa fac. curr_symbol
viene generata nel punto in cui l'elemento uguale a money_base::symbol compare nel modello di formato. In caso contrario, non viene generato alcun simbolo di valuta.
Se nessun vincolo di raggruppamento viene imposto da fac. grouping (il primo elemento ha il valore CHAR_MAX), non verranno generate istanze di fac. thousands_sep
nella parte valore del campo di output di tipo valuta, dove l'elemento uguale a money_base::value compare nel modello di formato. Se fac. frac_digits
è zero, dopo le cifre decimali non viene generata alcuna istanza di fac. decimal_point
. In caso contrario, il risultante campo di output di tipo valuta inserisce le cifre decimali fac. frac_digits
di ordine inferiore a destra della virgola decimale.
Viene inserita la spaziatura interna per i campi di output numerici, tranne nel caso in cui iosbase. flags & iosbase. internal è diverso da zero. In questo caso, l'eventuale spaziatura interna viene inserita nel punto in cui l'elemento uguale a money_base::space compare, se compare, nel modello di formato. In caso contrario, la spaziatura interna viene inserita prima della sequenza generata. Il carattere di riempimento è fill.
La funzione chiama iosbase. width(0) per reimpostare la larghezza del campo su zero.
Esempio
Vedere l'esempio relativo a put, in cui la funzione membro virtuale viene chiamata da put.
money_put::iter_type
Tipo che descrive un iteratore di output.
typedef OutputIterator iter_type;
Osservazioni:
Il tipo è un sinonimo del parametro di modello OutputIterator.
money_put::money_put
Costruttore per oggetti di tipo money_put
.
explicit money_put(size_t _Refs = 0);
Parametri
_Refs
Valore Integer che consente di specificare il tipo di gestione della memoria per l'oggetto.
Osservazioni:
I valori possibili per il parametro _Refs e il loro significato sono:
0: la durata dell'oggetto è gestita dalle impostazioni locali che lo contengono.
1: la durata dell'oggetto deve essere gestita manualmente.
> 1: questi valori non sono definiti.
Non è possibile fornire esempi diretti, poiché il distruttore è protetto.
Il costruttore inizializza l'oggetto di base con locale::facet( _Refs
).
money_put::p ut
Converte un numero o una stringa in una sequenza di caratteri che rappresenta un valore monetario.
iter_type put(
iter_type next,
bool _Intl,
ios_base& _Iosbase,
CharType _Fill,
const string_type& val) const;
iter_type put(
iter_type next,
bool _Intl,
ios_base& _Iosbase,
CharType _Fill,
long double val) const;
Parametri
next
Iteratore che punta al primo elemento della stringa inserita.
_Intl
Valore booleano che indica il tipo di simbolo di valuta previsto nella sequenza: true
se internazionale, false
se nazionale.
_Iosbase
Flag di formato che, quando impostato, indica che il simbolo di valuta è facoltativo; in caso contrario, indica che è necessario
_Riempire
Carattere usato per la spaziatura.
val
Oggetto stringa da convertire.
Valore restituito
Iteratore di output che punta alla posizione successiva all'ultimo elemento prodotto.
Osservazioni:
Entrambe le funzioni membro restituiscono do_put( next
, _Intl
, _Iosbase
, _Fill
, val
).
Esempio
// money_put_put.cpp
// compile with: /EHsc
#include <locale>
#include <iostream>
#include <sstream>
int main()
{
std::locale loc( "german_germany" );
std::basic_stringstream<char> psz;
psz.imbue(loc);
psz.flags(psz.flags() | std::ios_base::showbase); // force the printing of the currency symbol
std::use_facet<std::money_put<char> >(loc).put(std::basic_ostream<char>::_Iter(psz.rdbuf()), true, psz, ' ', 100012);
if (psz.fail())
std::cout << "money_put() FAILED" << std::endl;
else
std::cout << "money_put() = \"" << psz.rdbuf()->str() << "\"" << std::endl;
}
money_put() = "EUR1.000,12"
money_put::string_type
Tipo che descrive una stringa contenente caratteri di tipo CharType
.
typedef basic_string<CharType, Traits, Allocator> string_type;
Osservazioni:
Il tipo descrive una specializzazione del modello di classe basic_string i cui oggetti possono archiviare sequenze di elementi dalla sequenza di origine.
Vedi anche
<impostazioni locali>
Classe facet
Thread Safety in the C++ Standard Library (Sicurezza dei thread nella libreria standard C++)