Namensräume
Varianten
Aktionen

std::numpunct

Von cppreference.com
< cpp‎ | locale
 
 
 
 
 
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'
cpp/locale/locale/facetstd-numpunct-inheritance.svg

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) [bearbeiten]
zerstört ein numpunct-Facettelement
(protected member function) [bearbeiten]
ruft do_decimal_point auf
(public member function) [bearbeiten]
ruft do_thousands_sep auf
(public member function) [bearbeiten]
ruft do_grouping auf
(public member function) [bearbeiten]
ruft do_truename oder do_falsename auf
(public member function) [bearbeiten]

[bearbeiten] Geschützte Memberfunktionen

stellt das zu verwendende Zeichen für den Dezimalpunkt bereit
(virtual protected member function) [bearbeiten]
stellt das zu verwendende Zeichen für den Tausendertrenner bereit
(virtual protected member function) [bearbeiten]
[virtuell]
stellt die Anzahl der Ziffern zwischen jedem Paar von Tausendertrennzeichen bereit
(virtual protected member function) [bearbeiten]
liefert den String, der als Name für die booleschen Werte true und false verwendet wird
(virtual protected member function) [bearbeiten]

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