money_put-Klasse
Die Klassenvorlage beschreibt ein Objekt, das als Gebietsschema-Facet dienen kann, um Konvertierungen von Geldwerten in Sequenzen vom Typ CharType
zu steuern.
Syntax
template <class CharType,
class OutputIterator = ostreambuf_iterator<CharType>>
class money_put : public locale::facet;
Parameter
CharType
Der Typ, der innerhalb eines Programms zum Codieren von Zeichen in einem Gebietsschema verwendet wird.
OutputIterator
Der Typ des Iterators, in den die monetären Put-Funktionen ihre Ausgabe schreiben.
Hinweise
Wie bei jedem Gebietsschemafacet hat die statische Objekt-ID einen anfänglichen gespeicherten Wert von NULL. Beim ersten Versuch, auf den gespeicherten Wert zuzugreifen, wird in id ein eindeutiger positiver Wert gespeichert.
Konstruktoren
Konstruktor | Beschreibung |
---|---|
money_put | Der Konstruktor für Objekte des Typs money_put . |
TypeDefs
Typname | Beschreibung |
---|---|
char_type | Ein Typ, mit dem ein Zeichen beschrieben wird, das von einem Gebietsschema verwendet wird. |
iter_type | Ein Typ, der einen Ausgabeiterator beschreibt. |
string_type | Ein Typ, der eine Zeichenfolge beschreibt, die Zeichen vom Typ CharType enthält. |
Memberfunktionen
Memberfunktion | Beschreibung |
---|---|
do_put | Eine virtuelle Funktion, die aufgerufen wird, um entweder eine Zahl oder eine Zeichenfolge in eine Zeichenfolge zu konvertieren, die einen monetären Wert darstellt. |
put | Konvertiert entweder eine Zahl oder eine Zeichenfolge in eine Zeichenfolge, die einen monetären Wert darstellt. |
Anforderungen
Header:<locale>
Namespace: std
money_put::char_type
Ein Typ, mit dem ein Zeichen beschrieben wird, das von einem Gebietsschema verwendet wird.
typedef CharType char_type;
Hinweise
Der Typ stellt ein Synonym für den Vorlagenparameter CharType dar.
money_put::d o_put
Eine virtuelle Funktion, die aufgerufen wird, um entweder eine Zahl oder eine Zeichenfolge in eine Zeichenfolge zu konvertieren, die einen monetären Wert darstellt.
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;
Parameter
Weiter
Ein Iterator, der das erste Element in der eingefügten Zeichenfolge adressiert.
_Intl
Ein boolescher Wert, der die Art des Währungssymbols angibt, das in der Reihenfolge erwartet wird: true
wenn international, false
wenn inlands.
_Iosbase
Ein Formatkennzeichen, das bei Verwendung angibt, dass das Währungssymbol optional ist. Ansonsten ist das Währungssymbol erforderlich.
_Füllen
Ein Zeichen, das Leerzeichen einfügt.
val
Ein zu konvertierendes Zeichenfolgenobjekt.
Rückgabewert
Ein Ausgabeiterator, der auf die erste Position nach dem jeweils letzten Element verweist.
Hinweise
Die erste virtuelle geschützte Memberfunktion generiert sequenzielle Elemente, beginnend bei der Erstellung eines Geldausgabefelds aus der string_type Objektwert. Die durch Val gesteuerte Sequenz muss mit einer oder mehreren Dezimalziffern beginnen, optional vor einem Minuszeichen (-), das den Betrag darstellt. Die Funktion gibt einen Iterator zurück, der das erste Element nach dem generierten Ausgabefeld für monetäre Werte festlegt.
Die zweite virtuelle geschützte Memberfunktion verhält sich genauso wie die erste, mit der Ausnahme, dass sie die Val-Funktion zuerst in eine Abfolge von Dezimalstellen konvertiert, optional vor einem Minuszeichen, und konvertiert diese Sequenz dann wie oben.
Das Format eines Währungsausgabefelds wird durch das gebietsschema facet fac bestimmt, das vom (effektiven) Aufruf use_facet<moneypunct<CharType, intl>>( iosbase) zurückgegeben wird. getloc).
Speziell:
fac. pos_format bestimmt die Reihenfolge, in der Komponenten des Felds für einen nicht negativen Wert generiert werden.
fac. neg_format bestimmt die Reihenfolge, in der Komponenten des Felds für einen negativen Wert generiert werden.
fac. curr_symbol bestimmt die Sequenz von Elementen, die für ein Währungssymbol erzeugt werden soll.
fac. positive_sign bestimmt die Sequenz von Elementen, die für ein positives Vorzeichen generiert werden soll.
fac. negative_sign bestimmt die Sequenz von Elementen, die für ein negatives Vorzeichen generiert werden soll.
fac. grouping bestimmt, wie Ziffern auf der linken Seite des Dezimaltrennzeichens gruppiert werden.
fac. thousands_sep bestimmt das Element, das Gruppen von Ziffern auf der linken Seite eines Dezimaltrennzeichens trennt.
fac. decimal_point bestimmt das Element, das ganzzahlige Ziffern von Bruchziffern trennt.
fac. frac_digits bestimmt die Anzahl signifikanter Bruchziffern auf der rechten Seite eines Dezimaltrennzeichens.
Wenn die Zeichenzeichenfolge ( fac. negative_sign
oder fac. positive_sign
) mehr als ein Element aufweist, wird nur das erste Element generiert, wobei das Element gleich money_base::sign im Formatmuster ( fac. neg_format
oder fac) angezeigt wird. pos_format
Alle übrigen Elemente werden am Ende des Ausgabefelds für monetäre Werte generiert.
Wenn iosbase. flags & showbase is nonzero, the string fac. curr_symbol
dort generiert, wo das dem money_base::symbol entsprechende Element im Formatmuster angezeigt wird. Andernfalls wird kein Währungssymbol generiert.
Erfolgen keine Gruppierungseinschränkungen durch fac. grouping (sein erstes Element weist den Wert CHAR_MAX auf), werden keine Instanzen von fac. thousands_sep
im Wertteil des Ausgabefelds für monetäre Werte generiert (in dem das dem money_base::symbol entsprechende Element im Formatmuster angezeigt wird). Wenn fac. frac_digits
0 (null) ist, wird keine Instanz von fac. decimal_point
nach den Dezimalstellen generiert. Ansonsten platziert das jeweilige Ausgabefeld für monetäre Werte die niederwertigen fac. frac_digits
-Dezimalstellen auf der rechten Seite des Dezimaltrennzeichens.
Abstände treten wie bei Ausgabefeldern für numerische Werte auf. Wenn iosbase. flags & iosbase. internal ungleich 0 (null) ist, werden jedoch alle internen Abstände dort generiert, wo das dem money_base::space entsprechende Element im Formatmuster angezeigt wird (sofern es angezeigt wird). Andernfalls treten interne Abstände vor der generierten Sequenz auf. Das Füllzeichen ist fill.
Die Funktion ruft iosbase. width(0) auf, um die Feldbreite auf 0 (null) zurückzusetzen.
Beispiel
Informationen hierzu finden Sie im Beispiel für put, bei dem die virtuelle Memberfunktion durch put aufgerufen wird.
money_put::iter_type
Ein Typ, der einen Ausgabeiterator beschreibt.
typedef OutputIterator iter_type;
Hinweise
Der Typ ist ein Synonym für den Vorlagenparameter OutputIterator.
money_put::money_put
Der Konstruktor für Objekte des Typs money_put
.
explicit money_put(size_t _Refs = 0);
Parameter
_Refs
Integerwert, der zum Angeben des Speicherverwaltungstyps für das Objekt verwendet wird.
Hinweise
Die möglichen Werte für den _Refs Parameter und deren Bedeutung sind:
0: Die Lebensdauer des Objekts wird von den Gebietsschemas verwaltet, in denen es enthalten ist.
1: Die Lebensdauer des Objekts muss manuell verwaltet werden.
> 1: Diese Werte sind nicht definiert.
Direkte Beispiele hierfür sind nicht möglich, da der Destruktor geschützt ist.
Der Konstruktor initialisiert sein Basisobjekt mit locale::facet(_Refs
).
money_put::p ut
Konvertiert entweder eine Zahl oder eine Zeichenfolge in eine Zeichenfolge, die einen monetären Wert darstellt.
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;
Parameter
Weiter
Ein Iterator, der das erste Element in der eingefügten Zeichenfolge adressiert.
_Intl
Ein boolescher Wert, der die Art des Währungssymbols angibt, das in der Reihenfolge erwartet wird: true
wenn international, false
wenn inlands.
_Iosbase
Ein Formatkennzeichen, das bei Verwendung angibt, dass das Währungssymbol optional ist. Ansonsten ist das Währungssymbol erforderlich.
_Füllen
Ein Zeichen, das Leerzeichen einfügt.
val
Ein zu konvertierendes Zeichenfolgenobjekt.
Rückgabewert
Ein Ausgabeiterator, der auf die erste Position nach dem jeweils letzten Element verweist.
Hinweise
Beide Memberfunktionen geben do_put( next
, _Intl
, _Iosbase
, _Fill
, val
) zurück.
Beispiel
// 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
Ein Typ, der eine Zeichenfolge beschreibt, die Zeichen vom Typ CharType
enthält.
typedef basic_string<CharType, Traits, Allocator> string_type;
Hinweise
Der Typ beschreibt eine Spezialisierung der Klassenvorlage basic_string , deren Objekte Sequenzen von Elementen aus der Quellsequenz speichern können.
Siehe auch
<locale>
facet-Klasse
Threadsicherheit in der C++-Standardbibliothek