Namespaces
Variants

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

From cppreference.net
Definido en el encabezado <locale>
(1)
public :
int max_length ( ) const throw ( ) ;
(hasta C++11)
public :
int max_length ( ) const noexcept ;
(desde C++11)
(2)
protected :
virtual int do_max_length ( ) const throw ( ) ;
(hasta C++11)
protected :
virtual int do_max_length ( ) const noexcept ;
(desde C++11)
1) Función miembro pública, llama a la función miembro do_max_length de la clase más derivada.
2) Devuelve el valor máximo que do_length ( state, from, from_end, 1 ) puede devolver para cualquier rango válido [ from , from_end ) y cualquier state válido.

Contenidos

Valor de retorno

El número máximo de ExternT caracteres que podrían consumirse si se convirtieran mediante in() para producir un InternT carácter.

La especialización no convertidora std:: codecvt < char , char , std:: mbstate_t > retorna 1 .

Notas

Si la codificación es dependiente del estado ( encoding ( ) == - 1 ), entonces pueden consumirse más de max_length() caracteres externos para producir un carácter interno.

Ejemplo

#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";
}

Salida:

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

Véase también

MB_CUR_MAX
número máximo de bytes en un carácter multibyte en la configuración regional actual de C
(macro variable)
[virtual]
retorna el número de ExternT caracteres necesarios para producir un carácter InternT , si es constante
(función miembro protegida virtual)