std::codecvt<InternT,ExternT,StateT>::encoding, do_encoding
Von cppreference.com
| 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
Führen Sie diesen Code aus
#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) |
| [virtuell] |
gibt die maximale Anzahl von ExternT-Zeichen zurück, die in ein einzelnes InternT-Zeichen konvertiert werden könnten(virtuelle protected Memberfunktion) |