std::codecvt<InternT,ExternT,State>::max_length, do_max_length
提供: cppreference.com
<tbody>
</tbody>
<tbody class="t-dcl-rev t-dcl-rev-num ">
</tbody><tbody>
</tbody>
<tbody class="t-dcl-rev t-dcl-rev-num ">
</tbody><tbody>
</tbody>
| ヘッダ <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) public メンバ関数。 最も派生したクラスのメンバ関数
do_max_length を呼びます。2) 任意の有効な範囲
[from, from_end) および任意の有効な state について do_length(state, from, from_end, 1) が返し得る最大値を返します。戻り値
in() によって変換される場合にひとつの InternT 文字を生成するために消費され得る ExternT 文字の最大個数。
変換しない std::codecvt<char, char, std::mbstate_t> の特殊化は 1 を返します。
ノート
エンコーディングが状態依存 (encoding() == -1) の場合は、ひとつの内部文字を生成するために max_length() 個より多くの外部文字が消費されるかもしれません。
例
Run this code
#include <locale>
#include <iostream>
#include <codecvt>
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のロケールにおけるマルチバイト文字1文字の最大文字数 (macro variable) |
[仮想] |
一定であれば、ひとつの internT 文字を生成するのに必要な externT の文字数を返します (仮想プロテクテッドメンバ関数) |