Freigeben über


money_put-Klasse

Die Klassenvorlage beschreibt ein Objekt, das als Gebietsschema-Facet dienen kann, um Konvertierungen von Geldwerten in Sequenzen vom Typ CharTypezu 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