wstring_convert 类

一种在宽字符串和字节字符串之间执行转换的类模板 wstring_convert

语法

template <class Codecvt, class Elem = wchar_t>
class wstring_convert

参数

Codecvt
表示转换对象的区域设置方面。

Elem
宽字符元素类型。

备注

类模板描述一个对象,该对象用于控制类 std::basic_string<Elem> 的宽字符串对象和类 std::basic_string<char>(也称为 std::string)的字节字符串对象之间的转换。 类模板将类型 wide_stringbyte_string 定义为这两种类型的同义词。 一个 Elem 值序列(存储在 wide_string 对象中)和多字节序列(存储在 byte_string 对象中)之间的转换由类 Codecvt<Elem, char, std::mbstate_t> 的对象执行,这符合标准代码转换方面 std::codecvt<Elem, char, std::mbstate_t> 的要求。

此类模板的对象会存储:

  • 发生错误时显示的字节字符串

  • 发生错误时显示的宽字符串

  • 指向分配的转换对象(在销毁 wbuffer_convert 对象时释放)的指针

  • state_type 类型的转换状态对象

  • 转换计数

构造函数

构造函数 说明
wstring_convert 构造 wstring_convert 类型的对象。

Typedef

类型名称 说明
byte_string 表示字节字符串的类型。
wide_string 表示宽字符串的类型。
state_type 表示转换状态的类型。
int_type 表示整数的类型。

成员函数

成员函数 说明
from_bytes 将字节字符串转换为宽字符串。
to_bytes 将宽字符串转换为字节字符串。
converted 返回成功转换数。
State 返回表示转换状态的对象。

要求

标头:<locale>

命名空间: std

wstring_convert::byte_string

表示字节字符串的类型。

typedef std::basic_string<char> byte_string;

备注

类型是 std::basic_string<char> 的同义词。

wstring_convert::converted

返回成功转换数。

size_t converted() const;

返回值

成功的转换数。

备注

成功的转换数存储在转换计数对象中。

wstring_convert::from_bytes

将字节字符串转换为宽字符串。

wide_string from_bytes(char Byte);
wide_string from_bytes(const char* ptr);
wide_string from_bytes(const byte_string& Bstr);
wide_string from_bytes(const char* first, const char* last);

参数

Byte
要转换的单元素字节序列。

ptr
要转换的以 null 结尾的 C 样式字符序列。

Bstr
要转换的 byte_string

first
要转换的字符范围中的第一个字符。

last
要转换的字符范围中的最后一个字符。

返回值

由转换生成的宽字符串对象。

备注

如果转换状态对象不是使用显式值构造,请在转换开始之前将它设置为其默认值(初始转换状态)。 否则保持不变。

成功转换的输入元素的数量存储在转换计数对象中。 如果未发生转换错误,则该成员函数返回转换后的宽字符串。 否则,如果对象是使用宽字符串错误消息的初始值设定项构造的,则该成员函数返回宽字符串错误消息对象。 否则,成员函数将引发 range_error 类的对象。

wstring_convert::int_type

表示整数的类型。

typedef typename wide_string::traits_type::int_type int_type;

备注

类型是 wide_string::traits_type::int_type 的同义词。

wstring_convert::state

返回表示转换状态的对象。

state_type state() const;

返回值

转换状态对象,表示转换的状态。

注解

wstring_convert::state_type

表示转换状态的类型。

typedef typename Codecvt::state_type state_type;

注解

此类型描述一个可以表示转换状态的对象。 类型是 Codecvt::state_type 的同义词。

wstring_convert::to_bytes

将宽字符串转换为字节字符串。

byte_string to_bytes(Elem Char);
byte_string to_bytes(const Elem* Wptr);
byte_string to_bytes(const wide_string& Wstr);
byte_string to_bytes(const Elem* first, const Elem* last);

参数

Char
要转换的宽字符。

Wptr
要转换的以 null 结尾的 C 样式序列(从 wptr 开始)。

Wstr
要转换的 wide_string

first
要转换的元素范围内的第一个元素。

last
要转换的元素范围内的最后一个元素。

备注

如果转换状态对象不是使用显式值构造,请在转换开始之前将它设置为其默认值(初始转换状态)。 否则保持不变。

成功转换的输入元素的数量存储在转换计数对象中。 如果未发生转换错误,则成员函数返回转换后的字节字符串。 否则,如果对象是使用字节字符串错误消息的初始值设定项构造的,则成员函数返回字节字符串错误消息对象。 否则,成员函数将引发 range_error 类的对象。

wstring_convert::wide_string

表示宽字符串的类型。

typedef std::basic_string<Elem> wide_string;

注解

类型是 std::basic_string<Elem> 的同义词。

wstring_convert::wstring_convert

构造 wstring_convert 类型的对象。

wstring_convert(Codecvt *Pcvt = new Codecvt);
wstring_convert(Codecvt *Pcvt, state_type _State);
wstring_convert(const byte_string& _Berr, const wide_string& Werr = wide_string());

参数

*Pcvt
用于执行转换的 Codecvt 类型的对象。

_State
表示转换状态的 state_type 类型的对象。

_Berr
用于在发生错误时显示的 byte_string

Werr
用于在发生错误时显示的 wide_string

备注

第一个构造函数将存储转换对象中的 Pcvt_arg