Namespaces
Variants

std::codecvt<InternT,ExternT,StateT>:: max_length, do_max_length

From cppreference.net
Definiert im 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 Memberfunktion, ruft die Memberfunktion do_max_length der am stärksten abgeleiteten Klasse auf.
2) Gibt den maximalen Wert zurück, den do_length ( state, from, from_end, 1 ) für jeden gültigen Bereich [ from , from_end ) und jeden gültigen state zurückgeben kann.

Inhaltsverzeichnis

Rückgabewert

Die maximale Anzahl von ExternT Zeichen, die verbraucht werden könnten, wenn sie durch in() konvertiert werden, um ein InternT Zeichen zu erzeugen.

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

Hinweise

Wenn die Kodierung zustandsabhängig ist ( encoding ( ) == - 1 ), dann können mehr als max_length() externe Zeichen verbraucht werden, um ein internes Zeichen zu erzeugen.

Beispiel

#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

Siehe auch

MB_CUR_MAX
Maximale Anzahl von Bytes in einem Multibyte-Zeichen im aktuellen C-Locale
(Makrovariable)
[virtual]
Gibt die Anzahl der ExternT Zeichen zurück, die notwendig sind, um ein InternT Zeichen zu erzeugen, falls konstant
(virtuelle geschützte Memberfunktion)