std::numpunct
| Definiert in Header <locale> |
||
| template< class CharT > class numpunct; |
||
Das Facettelement std::numpunct kapselt Präferenzen für numerische Satzzeichen. Strom-I/O-Operationen verwenden std::numpunct über std::num_get und std::num_put zum Parsen numerischer Eingaben und Formatieren numerischer Ausgaben.
Die von std::numpunct unterstützten Zahlen haben das unten beschriebene Format. Hier repräsentiert digit die Radixmenge, die durch den fmtflags-Argumentwert angegeben wird. thousands-sep und decimal-point sind die Ergebnisse der Funktionen thousands_sep() bzw. decimal_point().
Das Format von Ganzzahlwerten ist wie folgt
integer ::= [sign] units sign ::= plusminus plusminus ::= '+' | '-' units ::= digits [thousands-sep units] digits ::= digit [digits]
Die Anzahl der Ziffern zwischen den thousand-seps (maximale Größe von digits) wird durch das Ergebnis von grouping() angegeben.
Das Format von Fließkommawerten ist wie folgt
floatval ::= [sign] units [decimal-point [digits]] [e [sign] digits] |
[sign] decimal-point digits [e [sign] digits]
e ::= 'e' | 'E'Vererbungdiagramm
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::numpunct<char> | stellt Äquivalente der "C"-Locale-Präferenzen bereit |
| std::numpunct<wchar_t> | stellt Wide-Character-Äquivalente der "C"-Locale-Präferenzen bereit |
[bearbeiten] Verschachtelte Typen
| Typ | Definition |
char_type
|
CharT
|
string_type
|
std::basic_string<CharT> |
[edit] Datenmember
| Mitglied | Beschreibung |
std::locale::id id [static] |
die Kennung des Facets |
[bearbeiten] Memberfunktionen
konstruiert ein neues numpunct-Facettelement(public member function) | |
zerstört ein numpunct-Facettelement(protected member function) | |
ruft do_decimal_point auf(public member function) | |
ruft do_thousands_sep auf(public member function) | |
ruft do_grouping auf(public member function) | |
ruft do_truename oder do_falsename auf(public member function) |
[bearbeiten] Geschützte Memberfunktionen
| [virtuell] |
stellt das zu verwendende Zeichen für den Dezimalpunkt bereit (virtual protected member function) |
| [virtuell] |
stellt das zu verwendende Zeichen für den Tausendertrenner bereit (virtual protected member function) |
| [virtuell] |
stellt die Anzahl der Ziffern zwischen jedem Paar von Tausendertrennzeichen bereit (virtual protected member function) |
| [virtuell] |
liefert den String, der als Name für die booleschen Werte true und false verwendet wird (virtual protected member function) |
[bearbeiten] Beispiel
Das folgende Beispiel ändert die String-Darstellungen von true und false
#include <iostream> #include <locale> struct french_bool : std::numpunct<char> { string_type do_truename() const override { return "vrai"; } string_type do_falsename() const override { return "faux"; } }; int main() { std::cout << "default locale: " << std::boolalpha << true << ", " << false << '\n'; std::cout.imbue(std::locale(std::cout.getloc(), new french_bool)); std::cout << "locale with modified numpunct: " << std::boolalpha << true << ", " << false << '\n'; }
Ausgabe
default locale: true, false locale with modified numpunct: vrai, faux
[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 338 | C++98 | das sign-Token erlaubte ein optionales Leerzeichen nach + oder - |
das Leerzeichen wurde entfernt |
[bearbeiten] Siehe auch
| erstellt ein numpunct-Facettelement für die benannte Locale (Klassentemplate) |