Namespaces
Variants

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

From cppreference.net
ヘッダーで定義 <locale>
(1)
public :
int max_length ( ) const throw ( ) ;
(C++11まで)
public :
int max_length ( ) const noexcept ;
(C++11以降)
(2)
protected :
virtual int do_max_length ( ) const throw ( ) ;
(C++11まで)
protected :
virtual int do_max_length ( ) const noexcept ;
(C++11以降)
1) 公開メンバ関数。最も派生したクラスのメンバ関数 do_max_length を呼び出します。
2) 任意の有効な範囲 [ from , from_end ) および任意の有効な state に対して、 do_length ( state, from, from_end, 1 ) が返すことのできる最大値を返します。

目次

戻り値

1つの InternT 文字を生成するために in() で変換された場合に消費される可能性がある ExternT 文字の最大数。

変換を行わない特殊化 std:: codecvt < char , char , std:: mbstate_t > 1 を返します。

注記

エンコーディングが状態依存の場合( encoding ( ) == - 1 )、1つの内部文字を生成するために max_length() 以上の外部文字が消費される可能性があります。

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

出力:

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

関連項目

MB_CUR_MAX
現在のCロケールにおけるマルチバイト文字の最大バイト数
(マクロ変数)
[virtual]
1つの InternT 文字を生成するために必要な ExternT 文字の数を返す(定数の場合)
(仮想プロテクテッドメンバ関数)