Namespaces
Variants

std::codecvt<InternT,ExternT,StateT>:: encoding, do_encoding

From cppreference.net
Definiert in Header <locale>
(1)
public :
int encoding ( ) const throw ( ) ;
(bis C++11)
public :
int encoding ( ) const noexcept ;
(seit C++11)
(2)
protected :
virtual int do_encoding ( ) const throw ( ) ;
(bis C++11)
protected :
virtual int do_encoding ( ) const noexcept ;
(seit C++11)
1) Öffentliche Memberfunktion, ruft die Memberfunktion do_encoding der am meisten abgeleiteten Klasse auf.
2) Falls die durch diese codecvt-Facette repräsentierte Kodierung jedes interne Zeichen auf die gleiche, konstante Anzahl externer Zeichen abbildet, gibt sie diese Anzahl zurück. Wenn die Kodierung variabler Länge ist (z.B. UTF-8 oder UTF-16), gibt sie 0 zurück. Wenn die Kodierung zustandsabhängig ist, gibt sie - 1 zurück.

Rückgabewert

Die genaue Anzahl von externT Zeichen, die einem internT Zeichen entsprechen, falls konstant. 0 falls die Anzahl variiert, - 1 falls die Kodierung zustandsabhängig ist.

Die nicht-konvertierende Spezialisierung std:: codecvt < char , char , std:: mbstate_t > gibt 1 zurück.

Beispiel

#include <iostream>
#include <locale>
int main()
{
    std::cout << "en_US.utf8 is a variable-length encoding, encoding() returns "
              << std::use_facet<std::codecvt<wchar_t, char, std::mbstate_t>>(
                     std::locale("en_US.utf8")
                 ).encoding() << '\n';
    std::cout << "zh_CN.gb18030 is also variable-length, encoding() == "
              << std::use_facet<std::codecvt<wchar_t, char, std::mbstate_t>>(
                     std::locale("zh_CN.gb18030")
                 ).encoding() << '\n';
    std::cout << "ru_RU.koi8r is a single-byte encoding, encoding() == "
              << std::use_facet<std::codecvt<wchar_t, char, std::mbstate_t>>(
                     std::locale("ru_RU.koi8r")
                 ).encoding() << '\n';
}

Ausgabe:

en_US.utf8 is a variable-length encoding, encoding() returns 0
zh_CN.gb18030 is also variable-length, encoding() == 0
ru_RU.koi8r is a single-byte encoding, encoding() == 1

Siehe auch

MB_CUR_MAX
Maximale Anzahl von Bytes in einem Multibyte-Zeichen im aktuellen C-Locale
(Makro-Variable)
[virtual]
Gibt die maximale Anzahl von ExternT Zeichen zurück, die in ein einzelnes InternT Zeichen konvertiert werden können
(virtuelle geschützte Member-Funktion)