一种在宽字符串和字节字符串之间执行转换的类模板 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_string 和 byte_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 | 将宽字符串转换为字节字符串。 |
| 转换 | 返回成功转换数。 |
| 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);
参数
字节
要转换的单元素字节序列。
ptr
要转换的以 null 结尾的 C 样式字符序列。
Bstr
要转换的 byte_string。
第一
要转换的字符范围中的第一个字符。
最后
要转换的字符范围中的最后一个字符。
返回值
由转换生成的宽字符串对象。
备注
如果转换状态对象不是使用显式值构造,请在转换开始之前将它设置为其默认值(初始转换状态)。 否则保持不变。
成功转换的输入元素的数量存储在转换计数对象中。 如果未发生转换错误,则该成员函数返回转换后的宽字符串。 否则,如果对象是使用宽字符串错误消息的初始值设定项构造的,则该成员函数返回宽字符串错误消息对象。 否则,成员函数将引发 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);
参数
煳
要转换的宽字符。
Wptr
要转换的以 null 结尾的 C 样式序列(从 wptr 开始)。
Wstr
要转换的 wide_string。
第一
要转换的元素范围内的第一个元素。
最后
要转换的元素范围内的最后一个元素。
备注
如果转换状态对象不是使用显式值构造,请在转换开始之前将它设置为其默认值(初始转换状态)。 否则保持不变。
成功转换的输入元素的数量存储在转换计数对象中。 如果未发生转换错误,则成员函数返回转换后的字节字符串。 否则,如果对象是使用字节字符串错误消息的初始值设定项构造的,则成员函数返回字节字符串错误消息对象。 否则,成员函数将引发 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。