std::money_put
| Definiert in Header <locale> |
||
| template< class CharT, |
||
Die Klasse std::money_put kapselt die Regeln für die Formatierung von monetären Werten in Zeichenketten. Der Standard-I/O-Manipulator std::put_money verwendet die std::money_put Facette der Locale des I/O-Streams.
Vererbungdiagramm
Wenn keine Spezialisierung von std::money_put garantiert von der Standardbibliothek bereitgestellt wird (siehe unten), sind die Verhaltensweisen seiner put() und do_put() nicht wie spezifiziert garantiert.
Inhalt |
[bearbeiten] Spezialisierungen
Die Standardbibliothek garantiert die Bereitstellung der folgenden Spezialisierungen (sie müssen von jedem Locale-Objekt implementiert werden)
| Definiert in Header
<locale> | |
| std::money_put<char> | erzeugt schmale Zeichenkettenrepräsentationen von monetären Werten |
| std::money_put<wchar_t> | erzeugt breite Zeichenkettenrepräsentationen von monetären Werten |
Darüber hinaus ist garantiert, dass die Standardbibliothek jede Spezialisierung bereitstellt, die die folgenden Tybanforderungen erfüllt:
-
CharTist eines davon:- char,
- wchar_t, und
- jeder andere implementierungsdefinierte Zeichencontainertyp, der die Anforderungen an ein Zeichen erfüllt, auf dem eine der iostream-Komponenten instanziiert werden kann; und
-
OutputItmuss die Anforderungen an LegacyOutputIterator erfüllen.
[bearbeiten] Verschachtelte Typen
| Typ | Definition |
char_type
|
CharT
|
string_type
|
std::basic_string<CharT> |
iter_type
|
OutputIt
|
[edit] Datenmember
| Mitglied | Beschreibung |
std::locale::id id [static] |
die Kennung des Facets |
[bearbeiten] Member-Funktionen
konstruiert eine neue money_put Facette(öffentliche Memberfunktion) | |
ruft do_put auf(öffentliche Memberfunktion) |
[bearbeiten] Protected Member-Funktionen
destruiert eine money_put Facette(geschützte Memberfunktion) | |
| [virtuell] |
formatiert einen monetären Wert und schreibt ihn in den Ausgabestrom (virtuelle protected member Funktion) |
[bearbeiten] Beispiel
#include <iomanip> #include <iostream> #include <iterator> #include <locale> int main() { // using the I/O manipulator std::cout.imbue(std::locale("en_US.UTF-8")); std::cout << "American locale: " << std::showbase << std::put_money(12345678.9) << '\n'; // using the facet directly 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 €
[bearbeiten] 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 sollte jeden CharT akzeptieren, derdie Anforderungen für ein Zeichen erfüllt, auf dem eine der iostream-Komponenten instanziiert werden kann |
garantiert nur die Akzeptanz von char, wchar_t und anderen implementierungs- definierten Zeichentypen |
| LWG 2392 | C++98 | nur der Zeichentyp CharT könntevon money_put akzeptiert werden sollte |
kann die Akzeptanz von implementierungs- definierten Zeichencontainertypen garantieren |
[bearbeiten] Siehe auch
| definiert Parameter für die Formatierung von Geldbeträgen, die von std::money_get und std::money_put verwendet werden (Klassentemplate) | |
| analysiert und konstruiert einen Geldbetrag aus einer Eingabezeichensequenz (Klassentemplate) | |
| (C++11) |
Formatiert und gibt einen Geldbetrag aus (Funktion-Template) |