Namensräume
Varianten
Aktionen

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

Von cppreference.com
< cpp‎ | locale‎ | codecvt
 
 
 
 
 
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 weitesten abgeleiteten Klasse auf.
2) Wenn die von dieser codecvt Facette dargestellte Kodierung jedem internen Zeichen die gleiche, konstante Anzahl von externen Zeichen zuordnet, wird diese Anzahl zurückgegeben. Wenn die Kodierung eine variable Länge hat (z. B. UTF-8 oder UTF-16), wird 0 zurückgegeben. Wenn die Kodierung zustandsabhängig ist, wird -1 zurückgegeben.

[bearbeiten] Rückgabewert

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

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

[bearbeiten] 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

[bearbeiten] Siehe auch

MB_CUR_MAX
maximale Anzahl von Bytes in einem Multibyte-Zeichen in der aktuellen C-Locale
(Makro-Variable)[bearbeiten]
[virtuell]
gibt die maximale Anzahl von ExternT-Zeichen zurück, die in ein einzelnes InternT-Zeichen konvertiert werden könnten
(virtuelle protected Memberfunktion) [bearbeiten]