Namespaces
Variants

std:: locale

From cppreference.net
Definiert in Header <locale>
class locale ;

Ein Objekt der Klasse std::locale ist eine unveränderliche indizierte Menge unveränderlicher Facetten. Jedes Stream-Objekt der C++-Eingabe-/Ausgabebibliothek ist mit einem std::locale -Objekt assoziiert und verwendet seine Facetten zum Parsen und Formatieren aller Daten. Zusätzlich ist ein Locale-Objekt mit jedem std::basic_regex -Objekt assoziiert. (seit C++11) Locale-Objekte können auch als Prädikate verwendet werden, die Zeichenkettenkollation mit Standardcontainern und Algorithmen durchführen, und können direkt abgerufen werden, um die enthaltenen Facetten zu erhalten oder zu modifizieren.

Jedes in einem C++-Programm erstellte Locale enthält mindestens die folgenden Standard-Facets (d.h. std::has_facet gibt true für alle diese Facet-Typen zurück), aber ein Programm kann zusätzliche Spezialisierungen oder komplett neue Facets definieren und diese zu jedem bestehenden Locale-Objekt hinzufügen.

**Anmerkung:** Da der Text ausschließlich aus C++-Code und HTML-Tags besteht und gemäß den Anweisungen keine Übersetzung von HTML-Tags, Code-Elementen oder C++-spezifischen Begriffen erfolgen soll, bleibt der Inhalt unverändert. Die präsentierten C++-Template-Spezialisierungen `std::num_get `, `std::num_get `, `std::numpunct ` und `std::numpunct ` sind Fachbegriffe der C++-Standardbibliothek und wurden nicht übersetzt. **Anmerkung:** Der bereitgestellte Text enthält ausschließlich C++-Code und HTML-Tags. Gemäß den Übersetzungsregeln wurden weder HTML-Tags noch C++-spezifische Begriffe (wie `std::money_get`, `std::moneypunct`, `char`, `wchar_t`, `true`) übersetzt. Da der Text keine natürlichen Sprachinhalte außerhalb der Code-Blöcke enthält, ist keine Übersetzung ins Deutsche erforderlich.
Unterstützte Facetten
std:: ctype < char >
std:: ctype < wchar_t >
std:: codecvt < char , char , std:: mbstate_t >
std:: codecvt < wchar_t , char , std:: mbstate_t >
std:: num_get < char >
std:: num_get < wchar_t >
std:: numpunct < char >
std:: numpunct < wchar_t >
std:: num_put < char >
std:: num_put < wchar_t >
std:: money_get < char >
std:: money_get < wchar_t >
std:: moneypunct < char >
std:: moneypunct < char , true >
std:: moneypunct < wchar_t >
std:: moneypunct < wchar_t , true >
std:: money_put < char >
std:: money_put < wchar_t >
std:: time_get < char >
std:: time_get < wchar_t >
std:: collate < char >
std:: collate < wchar_t >
std:: time_put < char >
std:: time_put < wchar_t >
std:: messages < char >
std:: messages < wchar_t >
Veraltete Facetten
std:: codecvt < char16_t , char , std:: mbstate_t > (seit C++11) (veraltet in C++20)
std:: codecvt < char32_t , char , std:: mbstate_t > (seit C++11) (veraltet in C++20)
std:: codecvt < char16_t , char8_t, std:: mbstate_t > (seit C++20) (veraltet)
std:: codecvt < char32_t , char8_t, std:: mbstate_t > (seit C++20) (veraltet)

Internally wird ein Locale-Objekt implementiert, als ob es ein referenzgezählter Zeiger auf ein Array (indiziert durch std::locale::id ) von referenzgezählten Zeigern auf Facetten wäre: Das Kopieren eines Locales kopiert nur einen Zeiger und erhöht mehrere Referenzzähler. Um die Standard-C++-Bibliothek-Threadsicherheitsgarantien aufrechtzuerhalten (Operationen auf verschiedenen Objekten sind immer threadsicher), werden sowohl der Locale-Referenzzähler als auch jeder Facetten-Referenzzähler auf threadsichere Weise aktualisiert, ähnlich wie std::shared_ptr .

Inhaltsverzeichnis

Mitgliedertypen

Typ Beschreibung
Der Facetten-Index-Typ: Jede Facettenklasse muss einen öffentlichen statischen Member dieses Typs deklarieren oder erben
(Klasse)
Die Basisklasse für alle Facettenkategorien: Jede Facette jeder Kategorie ist von diesem Typ abgeleitet
(Klasse)
category
int
(Typdefinition)

Member-Konstanten

Name Erklärung
const category none
[static]
ein Nullwert, der keine Facettenkategorie anzeigt
(öffentliche statische Member-Konstante)
const category collate
[static]
ein Bitmaskenwert, der die Collate-Facettenkategorie anzeigt
(öffentliche statische Member-Konstante)
const category ctype
[static]
ein Bitmaskenwert, der die Ctype-Facettenkategorie anzeigt
(öffentliche statische Member-Konstante)
const category monetary
[static]
ein Bitmaskenwert, der die Monetary-Facettenkategorie anzeigt
(öffentliche statische Member-Konstante)
const category numeric
[static]
ein Bitmaskenwert, der die Numeric-Facettenkategorie anzeigt
(öffentliche statische Member-Konstante)
const category time
[static]
ein Bitmaskenwert, der die Time-Facettenkategorie anzeigt
(öffentliche statische Member-Konstante)
const category messages
[static]
ein Bitmaskenwert, der die Messages-Facettenkategorie anzeigt
(öffentliche statische Member-Konstante)
const category all
[static]
collate | ctype | monetary | numeric | time | messages
(öffentliche statische Member-Konstante)

std::locale Member-Funktionen, die ein category Argument erwarten, benötigen einen der oben definierten Kategoriewerte oder die Vereinigung zweier oder mehrerer solcher Werte. Die LC Konstanten werden nicht akzeptiert.

Memberfunktionen

Konstruiert ein neues Locale
(öffentliche Elementfunktion)
Zerstört das Locale und die Facets, deren Referenzzähler null wird
(öffentliche Elementfunktion)
Ersetzt ein Locale
(öffentliche Elementfunktion)
Konstruiert ein Locale mit compile-time identifiziertem Facet aus einem anderen Locale
(öffentliche Elementfunktion)
Gibt den Namen des Locale zurück oder "*" wenn unbenannt
(öffentliche Elementfunktion)
(C++26)
Gibt das mit dem Locale assoziierte Zeichenkodierungsschema zurück
(öffentliche Elementfunktion)
(entfernt in C++20)
Gleichheitsvergleich zwischen Locale-Objekten
(öffentliche Elementfunktion)
Vergleicht zwei Zeichenketten lexikografisch unter Verwendung des Collate-Facets dieses Locale
(öffentliche Elementfunktion)
[static]
Ändert das globale Locale
(öffentliche statische Elementfunktion)
[static]
Ruft eine Referenz auf das "C"-Locale ab
(öffentliche statische Elementfunktion)

Beispiel

Demonstriert den typischen Prolog eines localesensitiven Programms (plattformübergreifend).

#include <iostream>
#include <locale>
int main()
{
    std::wcout << L"User-preferred locale setting is "
               << std::locale("").name().c_str() << L'\n';
    // on startup, the global locale is the "C" locale
    std::wcout << 1000.01 << L'\n';
    // replace the C++ global locale and the "C" locale with the user-preferred locale
    std::locale::global(std::locale(""));
    // use the new global locale for future wide character output
    std::wcout.imbue(std::locale());
    // output the same number again
    std::wcout << 1000.01 << L'\n';
}

Mögliche Ausgabe:

User-preferred locale setting is en_US.UTF8
1000.01
1,000.01

Fehlerberichte

Die folgenden verhaltensändernden Fehlerberichte wurden rückwirkend auf zuvor veröffentlichte C++-Standards angewendet.

DR Angewendet auf Verhalten wie veröffentlicht Korrektes Verhalten
LWG 340 C++98 Die Menge der Standard-Facets, die alle Locales enthalten müssen, war unklar Klarstellung vorgenommen
LWG 347 C++98 Parameter vom Typ category konnten LC Konstanten akzeptieren Nicht mehr akzeptiert

Siehe auch

beschreibt eine Schnittstelle für den Zugriff auf das IANA Character Sets Registry
(Klasse)
erhält einen Facet aus einem Locale
(Funktionstemplate)
prüft, ob ein Locale einen bestimmten Facet implementiert
(Funktionstemplate)
setzt das Locale
(öffentliche Elementfunktion von std::ios_base )
gibt das aktuelle Locale zurück
(öffentliche Elementfunktion von std::ios_base )