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 都将根据 facet Codecvt
定义进行字符转换。std::wbuffer_convert
拥有转换 facet 的所有权,不能使用由区域设置管理的 facet。
适用于 std::wbuffer_convert
的标准 facet 有:用于 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 (public 成员函数) | |
operator= |
拷贝赋值运算符已被删除 (公开成员函数) |
销毁 wbuffer_convert 及其转换 facet(public 成员函数) | |
返回或替换底层窄流缓冲区 (public 成员函数) | |
返回当前转换状态 (public 成员函数) |
[编辑] 另请参阅
字符 转换 |
由区域设置定义的多字节 (UTF-8, GB18030) |
UTF-8 |
UTF-16 |
---|---|---|---|
UTF-16 | mbrtoc16 / c16rtomb (带 C11 的 DR488) |
codecvt<char16_t,char,mbstate_t> |
不适用 |
UCS-2 | c16rtomb (不带 C11 的 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)(C++17 中已弃用)(C++26 中已移除) |
执行宽字符串和字节字符串之间的转换 (类模板) |
(C++11)(C++17 中已弃用)(C++26 中已移除) |
在 UTF-8 和 UCS-2/UCS-4 之间转换 (类模板) |
(C++11)(C++17 中已弃用)(C++26 中已移除) |
在 UTF-8 和 UTF-16 之间转换 (类模板) |