类模板
<locale>

std::wbuffer_convert

template < class Codecvt,           class Elem = wchar_t,           class Tr = char_traits<Elem> > class wbuffer_convert  : public std::basic_streambuf<Elem,Tr>;
宽字符缓冲区的转换

处理类型为Elem且具有Tr作为字符特性的(宽)字符的流缓冲区类。

该类使用字节(类型为char的窄字符)的另一个流缓冲区作为其底层的字节流缓冲区,并在该缓冲区之间转换Elem类型的宽字符(作为其第二个模板参数)。

对于转换,该类使用类型为Codecvt转换对象,它在构造时获得其所有权,并在某个时候(当它自身被销毁时)负责其删除。

模板参数

Codecvt
转换对象的类型:这应该是一个具有与codecvt区域设置方面相同的类,例如头文件<codecvt>中定义的标准类之一。
Elem
宽字符类型。
这应该对应于codecvt转换对象内部类型
Tr
字符特性类。
默认为:char_traits<Elem>

对象状态

对象内部存储以下数据元素
类型描述
streambuf*指向其底层字节流缓冲区的指针,通过成员rdstate访问。
Codecvt*指向转换对象的指针。
state_type转换状态对象,通过成员state访问。

成员类型

成员类型定义
state_typeCodecvt::state_type

成员函数


示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
// wbuffer_convert example
#include <iostream>       // std::cout, std::ios, std::wostream
#include <locale>         // std::wbuffer_convert
#include <codecvt>        // std::codecvt_utf8
#include <fstream>        // std::filebuf

int main ()
{
  // file buffer (narrow buffer):
  std::filebuf myfile;
  myfile.open("test.txt",std::ios::out);

  // conversor (wide buffer -> narrow buffer, using UTF-8):
  std::wbuffer_convert<std::codecvt_utf8<wchar_t>> bufconv (&myfile);

  // stream (wide buffer):
  std::wostream mystream (&bufconv);

  mystream << L"Test";  // writes wide string to file (UTF-8)

  return 0;
}