Namensräume
Varianten
Aktionen

std::money_put

Von cppreference.com
< cpp‎ | locale
 
 
 
 
 
Definiert in Header <locale>
template<

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

> class money_put;

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.

cpp/locale/locale/facetstd-money put-inheritance.svg

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:

[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]

[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, der
die 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önnte
von 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) [bearbeiten]
analysiert und konstruiert einen Geldbetrag aus einer Eingabezeichensequenz
(Klassentemplate) [bearbeiten]
(C++11)
Formatiert und gibt einen Geldbetrag aus
(Funktion-Template) [bearbeiten]