std::codecvt<InternT,ExternT,StateT>:: max_length, do_max_length
|
定义于头文件
<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 起) | |
do_max_length
。
[
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()
个外部字符才能生成一个内部字符。
示例
#include <codecvt> #include <iostream> #include <locale> int main() { std::cout << "在 codecvt_utf8 中,最长的多字节字符长度为 " << std::codecvt_utf8<wchar_t>().max_length() << " 字节\n"; std::cout << "在包含文件头的 codecvt_utf8 中,最长的多字节字符长度为 " << std::codecvt_utf8<wchar_t, 0x10ffff, std::consume_header>().max_length() << " 字节\n"; std::cout << "在本系统的 en_US.utf8 区域设置中,最长的多字节字符长度为 " << std::use_facet<std::codecvt<wchar_t, char, std::mbstate_t>>( std::locale("en_US.utf8") ).max_length() << " 字节\n"; std::cout << "在本系统的 zh_CN.gb18030 区域设置中,最长的多字节字符长度为 " << std::use_facet<std::codecvt<wchar_t, char, std::mbstate_t>>( std::locale("zh_CN.gb18030") ).max_length() << " 字节\n"; }
输出:
在 codecvt_utf8 中,最长的多字节字符长度为 4 字节 在包含文件头的 codecvt_utf8 中,最长的多字节字符长度为 7 字节 在本系统的 en_US.utf8 区域设置中,最长的多字节字符长度为 6 字节 在本系统的 zh_CN.gb18030 区域设置中,最长的多字节字符长度为 4 字节
参见
|
MB_CUR_MAX
|
当前C本地环境中多字节字符的最大字节数
(宏变量) |
|
[virtual]
|
返回生成一个
InternT
字符所需的
ExternT
字符数量(若为常量)
(虚受保护成员函数) |