std::codecvt<InternT,ExternT,StateT>::max_length, do_max_length
Von cppreference.com
| Definiert in Header <locale> |
||
| (1) | ||
public: int max_length() const throw(); |
(bis C++11) | |
| public: int max_length() const noexcept; |
(seit C++11) | |
| (2) | ||
protected: virtual int do_max_length() const throw(); |
(bis C++11) | |
| protected: virtual int do_max_length() const noexcept; |
(seit C++11) | |
1) Öffentliche Member-Funktion, ruft die Member-Funktion
do_max_length der am weitesten abgeleiteten Klasse auf.2) Gibt den Maximalwert zurück, den do_length(state, from, from_end, 1) für einen beliebigen gültigen Bereich
[from, from_end) und einen beliebigen gültigen state zurückgeben kann.Inhalt |
[bearbeiten] Rückgabewert
Die maximale Anzahl von ExternT-Zeichen, die beim Konvertieren durch in() verbraucht werden könnten, um ein InternT-Zeichen zu erzeugen.
Die nicht-konvertierende Spezialisierung std::codecvt<char, char, std::mbstate_t> gibt 1 zurück.
[bearbeiten] Hinweise
Wenn die Kodierung zustandsabhängig ist (encoding() == -1), können mehr als max_length() externe Zeichen verbraucht werden, um ein internes Zeichen zu erzeugen.
[bearbeiten] Beispiel
Führen Sie diesen Code aus
#include <codecvt> #include <iostream> #include <locale> int main() { std::cout << "In codecvt_utf8, the longest multibyte character is " << std::codecvt_utf8<wchar_t>().max_length() << " bytes long\n"; std::cout << "In header-consuming codecvt_utf8, the longest multibyte character is " << std::codecvt_utf8<wchar_t, 0x10ffff, std::consume_header>().max_length() << " bytes long\n"; std::cout << "In this system's en_US.utf8, the longest multibyte character is " << std::use_facet<std::codecvt<wchar_t, char, std::mbstate_t>>( std::locale("en_US.utf8") ).max_length() << " bytes long\n"; std::cout << "In this system's zh_CN.gb18030, the longest multibyte character is " << std::use_facet<std::codecvt<wchar_t, char, std::mbstate_t>>( std::locale("zh_CN.gb18030") ).max_length() << " bytes long\n"; }
Ausgabe
In codecvt_utf8, the longest multibyte character is 4 bytes long In header-consuming codecvt_utf8, the longest multibyte character is 7 bytes long In this system's en_US.utf8, the longest multibyte character is 6 bytes long In this system's zh_CN.gb18030, the longest multibyte character is 4 bytes long
[bearbeiten] Siehe auch
| MB_CUR_MAX |
maximale Anzahl von Bytes in einem Multibyte-Zeichen in der aktuellen C-Locale (Makro-Variable) |
| [virtuell] |
gibt die Anzahl der ExternT-Zeichen zurück, die zur Erzeugung eines InternT-Zeichens erforderlich sind, falls diese konstant ist(virtuelle protected Member-Funktion) |