Namespaces
Variants

std:: money_put

From cppreference.net
Definiert in Header <locale>
template <

class CharT,
class OutputIt = std:: ostreambuf_iterator < CharT >

> class money_put ;

Die Klasse std::money_put kapselt die Regeln zur Formatierung von Geldbeträgen als Zeichenketten. Der Standard-I/O-Manipulator std::put_money verwendet das std::money_put Facet der Locale des I/O-Streams.

cpp/locale/locale/facet std-money put-inheritance.svg

Vererbungsdiagramm

Wenn eine std::money_put Spezialisierung nicht garantiert von der Standardbibliothek bereitgestellt wird (siehe unten), sind die Verhaltensweisen ihrer put() und do_put() Funktionen nicht garantiert wie spezifiziert.

Inhaltsverzeichnis

Spezialisierungen

Die Standardbibliothek garantiert die Bereitstellung der folgenden Spezialisierungen (sie sind von jedem Locale-Objekt implementiert werden müssen ):

Definiert im Header <locale>
std :: money_put < char > erzeugt Schmalstring-Darstellungen von Geldwerten
std :: money_put < wchar_t > erzeugt Breitstring-Darstellungen von Geldwerten

Darüber hinaus garantiert die Standardbibliothek auch jede Spezialisierung bereitzustellen, die die folgenden Typanforderungen erfüllt:

Verschachtelte Typen

Typ Definition
char_type CharT
string_type std:: basic_string < CharT >
iter_type OutputIt

Datenmitglieder

Mitglied Beschreibung
std::locale::id id [static] der Identifikator des Facet

Memberfunktionen

Konstruiert einen neuen money_put Facet
(öffentliche Elementfunktion)
ruft do_put auf
(öffentliche Elementfunktion)

Geschützte Memberfunktionen

zerstört einen money_put Facet
(geschützte Elementfunktion)
[virtual]
formatiert einen Geldwert und schreibt in den Ausgabestrom
(virtuelle geschützte Elementfunktion)

Beispiel

#include <iomanip>
#include <iostream>
#include <iterator>
#include <locale>
int main()
{
    // Verwendung des I/O-Manipulators
    std::cout.imbue(std::locale("en_US.UTF-8"));
    std::cout << "American locale: "
              << std::showbase << std::put_money(12345678.9) << '\n';
    // Direkte Verwendung des Facets
    std::cout.imbue(std::locale("de_DE.UTF-8"));
    std::cout << "German locale: ";
    auto& f = std::use_facet<std::money_put<char>>(std::cout.getloc());
    f.put({std::cout}, false, std::cout, std::cout.fill(), 12345678.9);
    std::cout << '\n';
}

Ausgabe:

American locale: $123,456.79
German locale: 123.456,79 €

Fehlerberichte

Die folgenden verhaltensändernden Fehlerberichte wurden rückwirkend auf zuvor veröffentlichte C++-Standards angewendet.

DR Angewendet auf Verhalten wie veröffentlicht Korrigiertes Verhalten
LWG 427 C++98 money_put war garantiert für jedes CharT anwendbar,
das die Anforderungen für ein Zeichen erfüllt, für das
irgendeine der iostream-Komponenten instanziiert werden kann
garantiert nur für char ,
wchar_t und andere implementierungs-
definierte Zeichentypen
LWG 2392 C++98 nur Zeichentyp CharT konnte
durch money_put garantiert akzeptiert werden
kann implementierungs-
definierte Zeichencontainertypen akzeptieren garantieren

Siehe auch

definiert die von std::money_get und std::money_put verwendeten Währungsformatierungsparameter
(Klassentemplate)
analysiert und konstruiert einen Währungswert aus einer Eingabezeichenfolge
(Klassentemplate)
(C++11)
formatiert und gibt einen Währungswert aus
(Funktionstemplate)