std:: money_get
|
Definiert in Header
<locale>
|
||
|
template
<
class
CharT,
|
||
Klassentemplate
std::money_get
kapselt die Regeln zum Parsen von Geldbeträgen aus Zeichenströmen. Der Standard-I/O-Manipulator
std::get_money
verwendet das
std::money_get
Facet der Locale des I/O-Streams.
Vererbungsdiagramm
Wenn eine
std::money_get
Spezialisierung nicht garantiert von der Standardbibliothek bereitgestellt wird (siehe unten), sind die Verhaltensweisen von
get()
und
do_get()
nicht wie spezifiziert garantiert.
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_get < char > | analysiert Narrow-String-Darstellungen von Geldwerten |
| std :: money_get < wchar_t > | analysiert Wide-String-Darstellungen von Geldwerten |
Zusätzlich ist die Standardbibliothek auch garantiert, 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
-
InputItmuss die Anforderungen von LegacyInputIterator erfüllen.
Verschachtelte Typen
| Typ | Definition |
char_type
|
CharT
|
string_type
|
std:: basic_string < CharT > |
iter_type
|
InputIt
|
Datenmitglieder
| Mitglied | Beschreibung |
std::locale::id
id
[static]
|
der Identifikator des Facet |
Memberfunktionen
Konstruiert einen neuen
money_get
Facette
(öffentliche Elementfunktion) |
|
ruft
do_get
auf
(öffentliche Elementfunktion) |
Geschützte Memberfunktionen
zerstört einen
money_get
Facette
(geschützte Elementfunktion) |
|
|
[virtual]
|
analysiert einen Geldwert aus einem Eingabestrom
(virtuelle geschützte Elementfunktion) |
Beispiel
#include <iomanip> #include <iostream> #include <iterator> #include <locale> #include <sstream> int main() { std::string str = "$1.11 $2.22 $3.33"; std::cout << std::fixed << std::setprecision(2); std::cout << '\"' << str << "\" parsed with the I/O manipulator: "; std::istringstream s1(str); s1.imbue(std::locale("en_US.UTF-8")); long double val; while (s1 >> std::get_money(val)) std::cout << val / 100 << ' '; std::cout << '\n'; str = "USD 1,234.56"; std::cout << '\"' << str << "\" parsed with the facet directly: "; std::istringstream s2(str); s2.imbue(std::locale("en_US.UTF-8")); auto& f = std::use_facet<std::money_get<char>>(s2.getloc()); std::ios_base::iostate err; std::istreambuf_iterator<char> beg(s2), end; f.get(beg, end, true, s2, err, val); std::cout << val / 100 << '\n'; }
Ausgabe:
"$1.11 $2.22 $3.33" parsed with the I/O manipulator: 1.11 2.22 3.33 "USD 1,234.56" parsed with the facet directly: 1234.56
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_get
war garantiert, jedes
CharT
zu akzeptieren,
das die Anforderungen für ein Zeichen erfüllt, für das eine beliebige iostream-Komponente instanziiert werden kann |
garantiert nur die Akzeptanz von
char
,
wchar_t und anderen implementierungs- definierten Zeichentypen |
| LWG 2392 | C++98 |
nur Zeichentyp
CharT
konnte
durch
money_get
garantiert akzeptiert werden
|
kann die Akzeptanz von implementierungs-
definierten Zeichencontainertypen garantieren |
Siehe auch
|
definiert von
std::money_get
und
std::money_put
verwendete Formatierungsparameter für Währungsangaben
(Klassentemplate) |
|
|
formatiert einen Geldwert zur Ausgabe als Zeichenfolge
(Klassentemplate) |
|
|
(C++11)
|
analysiert einen Geldwert
(Funktionstemplate) |