類模板
<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;
}