std:: wbuffer_convert
|
定义于头文件
<locale>
|
||
|
template
<
class
Codecvt,
|
(C++11 起)
(C++17 中弃用) (C++26 中移除) |
|
std::wbuffer_convert
是对
std::
basic_streambuf
<
char
>
类型流缓冲区的包装器,使其呈现为
std::
basic_streambuf
<
Elem
>
的外观。所有通过
std::wbuffer_convert
执行的 I/O 操作都会按照
Codecvt
转换刻面定义的规则进行字符转换。
std::wbuffer_convert
会接管转换刻面的所有权,因此无法使用由 locale 管理的转换刻面。
适合与
std::wbuffer_convert
搭配使用的标准 facets 包括:用于 UTF-8/UCS-2 和 UTF-8/UCS-4 转换的
std::codecvt_utf8
,以及用于 UTF-8/UTF-16 转换的
std::codecvt_utf8_utf16
。
此模板类使得任何 std::basic_filebuf 的隐式字符转换功能可用于 std::basic_streambuf 。
目录 |
成员类型
| 类型 | 定义 |
state_type
|
Codecvt :: state_type |
数据成员
| 成员 | 说明 |
std::
streambuf
*
bufptr
|
指向底层字节流缓冲区的指针
( 仅用于说明的成员对象* ) |
Codecvt
*
cvtptr
|
指向已分配转换对象的指针
( 仅用于说明的成员对象* ) |
state_type
cvtstate
|
转换状态对象
( 仅用于说明的成员对象* ) |
成员函数
构造新的
wbuffer_convert
(公开成员函数) |
|
|
operator=
|
复制赋值运算符被删除
(公开成员函数) |
销毁
wbuffer_convert
及其转换 facet
(公开成员函数) |
|
|
返回或替换底层窄流缓冲区
(公开成员函数) |
|
|
返回当前转换状态
(公开成员函数) |
参见
|
字符
转换 |
区域设置定义的多字节
(UTF-8, GB18030) |
UTF-8
|
UTF-16
|
|---|---|---|---|
| UTF-16 | mbrtoc16 / c16rtomb (with C11's DR488) |
codecvt
<
char16_t
,
char
,mbstate_t
>
|
N/A |
| UCS-2 | c16rtomb (without C11's DR488) | codecvt_utf8 < char16_t > | codecvt_utf16 < char16_t > |
| UTF-32 |
codecvt
<
char32_t
,
char
,mbstate_t
>
|
codecvt_utf16 < char32_t > |
|
|
系统
wchar_t
:
UTF-32
(非Windows)
|
mbsrtowcs
/
wcsrtombs
|
codecvt_utf8 < wchar_t > | codecvt_utf16 < wchar_t > |
|
(C++11)
(deprecated in C++17)
(removed in C++26)
|
在宽字符串与字节字符串之间执行转换
(类模板) |
|
(C++11)
(deprecated in C++17)
(removed in C++26)
|
在 UTF-8 与 UCS-2/UCS-4 之间进行转换
(类模板) |
|
(C++11)
(deprecated in C++17)
(removed in C++26)
|
在 UTF-8 与 UTF-16 之间进行转换
(类模板) |