std:: money_put
|
Definiert in Header
<locale>
|
||
|
template
<
class
CharT,
|
||
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.
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:
-
CharTist einer von- char ,
- wchar_t , und
- jedem anderen implementierungsdefinierten Zeichencontainertyp , der die Anforderungen für ein Zeichen erfüllt, für das beliebige iostream-Komponenten instanziiert werden können; und
-
OutputItmuss die Anforderungen eines LegacyOutputIterator erfüllen.
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) |