std:: codecvt_byname
|
Definiert im Header
<locale>
|
||
|
template
<
class
InternT,
class
ExternT,
class
State
>
class codecvt_byname : public std:: codecvt < InternT, ExternT, State > ; |
||
std::codecvt_byname
ist ein
std::codecvt
Facette, das die Multibyte-/Breitzeichen-Konvertierungsregeln eines Locales kapselt, das bei seiner Konstruktion spezifiziert wird.
Inhaltsverzeichnis |
Spezialisierungen
Die Standardbibliothek garantiert die Bereitstellung der folgenden Spezialisierungen:
|
Definiert im Header
<locale>
|
|
| std :: codecvt_byname < char , char , std:: mbstate_t > | Identitätskonvertierung |
|
std
::
codecvt_byname
<
char16_t
,
char
,
std::
mbstate_t
>
(seit C++11) (veraltet in C++20) |
Konvertierung zwischen UTF-16 und UTF-8 |
|
std
::
codecvt_byname
<
char16_t
, char8_t,
std::
mbstate_t
>
(seit C++20) |
Konvertierung zwischen UTF-16 und UTF-8 |
|
std
::
codecvt_byname
<
char32_t
,
char
,
std::
mbstate_t
>
(seit C++11) (veraltet in C++20) |
Konvertierung zwischen UTF-32 und UTF-8 |
|
std
::
codecvt_byname
<
char32_t
, char8_t,
std::
mbstate_t
>
(seit C++20) |
Konvertierung zwischen UTF-32 und UTF-8 |
| std :: codecvt_byname < wchar_t , char , std:: mbstate_t > | Lokalspezifische Konvertierung zwischen Breitzeichen- und Schmalzeichen-Zeichensätzen |
Memberfunktionen
|
(Konstruktor)
|
konstruiert einen neuen
codecvt_byname
Facette
(öffentliche Elementfunktion) |
|
(Destruktor)
|
zerstört eine
codecvt_byname
Facette
(geschützte Elementfunktion) |
std::codecvt_byname:: codecvt_byname
|
explicit
codecvt_byname
(
const
char
*
name,
std::
size_t
refs
=
0
)
;
|
||
|
explicit
codecvt_byname
(
const
std::
string
&
name,
std::
size_t
refs
=
0
)
;
|
(seit C++11) | |
Konstruiert einen neuen
std::codecvt_byname
-Facet für ein Locale mit
name
.
refs wird für die Ressourcenverwaltung verwendet: wenn refs == 0 , zerstört die Implementierung den Facet, wenn das letzte std::locale -Objekt, das ihn enthält, zerstört wird. Andernfalls wird das Objekt nicht zerstört.
Parameter
| name | - | der Name des Locale |
| refs | - | die Anzahl der Referenzen, die mit dem Facet verknüpft sind |
std::codecvt_byname:: ~codecvt_byname
|
protected
:
~codecvt_byname ( ) ; |
||
Zerstört den Facet.
Geerbt von std:: codecvt
Verschachtelte Typen
| Typ | Definition |
intern_type
|
internT
|
extern_type
|
externT
|
state_type
|
stateT
|
Datenmitglieder
| Member | Beschreibung |
std::locale::id
id
[static]
|
der Identifikator des Facets |
Memberfunktionen
ruft
do_out
auf
(öffentliche Elementfunktion von
std::codecvt<InternT,ExternT,StateT>
)
|
|
ruft
do_in
auf
(öffentliche Elementfunktion von
std::codecvt<InternT,ExternT,StateT>
)
|
|
ruft
do_unshift
auf
(öffentliche Elementfunktion von
std::codecvt<InternT,ExternT,StateT>
)
|
|
ruft
do_encoding
auf
(öffentliche Elementfunktion von
std::codecvt<InternT,ExternT,StateT>
)
|
|
ruft
do_always_noconv
auf
(öffentliche Elementfunktion von
std::codecvt<InternT,ExternT,StateT>
)
|
|
ruft
do_length
auf
(öffentliche Elementfunktion von
std::codecvt<InternT,ExternT,StateT>
)
|
|
ruft
do_max_length
auf
(öffentliche Elementfunktion von
std::codecvt<InternT,ExternT,StateT>
)
|
Geschützte Elementfunktionen
|
[virtual]
|
konvertiert eine Zeichenkette von
InternT
zu
ExternT
, beispielsweise beim Schreiben in eine Datei
(geschützte virtuelle Elementfunktion von
std::codecvt<InternT,ExternT,StateT>
)
|
|
[virtual]
|
konvertiert eine Zeichenkette von
ExternT
zu
InternT
, beispielsweise beim Lesen aus einer Datei
(geschützte virtuelle Elementfunktion von
std::codecvt<InternT,ExternT,StateT>
)
|
|
[virtual]
|
erzeugt die Abschlusszeichenfolge von
ExternT
-Zeichen für unvollständige Konvertierung
(geschützte virtuelle Elementfunktion von
std::codecvt<InternT,ExternT,StateT>
)
|
|
[virtual]
|
gibt die Anzahl der
ExternT
-Zeichen zurück, die zur Erzeugung eines
InternT
-Zeichens erforderlich sind, falls konstant
(geschützte virtuelle Elementfunktion von
std::codecvt<InternT,ExternT,StateT>
)
|
|
[virtual]
|
prüft, ob das Facet für alle gültigen Argumentwerte eine Identitätskonvertierung durchführt
(geschützte virtuelle Elementfunktion von
std::codecvt<InternT,ExternT,StateT>
)
|
|
[virtual]
|
berechnet die Länge der
ExternT
-Zeichenkette, die durch Konvertierung in den gegebenen
InternT
-Puffer verbraucht würde
(geschützte virtuelle Elementfunktion von
std::codecvt<InternT,ExternT,StateT>
)
|
|
[virtual]
|
gibt die maximale Anzahl von
ExternT
-Zeichen zurück, die in ein einzelnes
InternT
-Zeichen konvertiert werden könnten
(geschützte virtuelle Elementfunktion von
std::codecvt<InternT,ExternT,StateT>
)
|
Geerbt von std:: codecvt_base
| Geschachtelter Typ | Definition |
| enum result { ok, partial, error, noconv } ; | Unbegrenzter Aufzählungstyp |
| Aufzählungskonstante | Definition |
ok
|
Konvertierung wurde ohne Fehler abgeschlossen |
partial
|
nicht alle Quellzeichen wurden konvertiert |
error
|
ungültiges Zeichen angetroffen |
noconv
|
keine Konvertierung erforderlich, Eingabe- und Ausgabetypen sind identisch |
Beispiel
Dieses Beispiel demonstriert das Lesen einer GB18030-kodierten Datei unter Verwendung der codecvt-Facette aus einem GB18030-fähigen Locale.
#include <fstream> #include <iostream> #include <locale> #include <string> int main() { // GB18030 narrow multibyte encoding std::ofstream("text.txt") << "\x7a" // letter 'z', U+007a "\x81\x30\x89\x38" // letter 'ß', U+00df "\xcb\xae" // CJK ideogram '水' (water), U+6c34 "\x94\x32\xbc\x35"; // musical sign '𝄋' (segno), U+1d10b std::wifstream fin("text.txt"); fin.imbue(std::locale(fin.getloc(), new std::codecvt_byname<wchar_t, char, std::mbstate_t>("zh_CN.gb18030"))); for (wchar_t c; fin.get(c);) std::cout << std::hex << std::showbase << static_cast<unsigned>(c) << '\n'; }
Mögliche Ausgabe:
0x7a 0xdf 0x6c34 0x1d10b
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 21 | C++98 |
die Standardbibliothek musste keine
std::codecvt_byname
Spezialisierungen bereitstellen
|
zwei Spezialisierungen sind erforderlich |
Siehe auch
|
Konvertiert zwischen Zeichenkodierungen, einschließlich UTF-8, UTF-16, UTF-32
(Klassentemplate) |