std::codecvt<InternT,ExternT,State>::unshift, do_unshift

< cpp‎ | locale‎ | codecvt
定义于头文件 <locale>
public:

result unshift( StateT& state,
                ExternT* to,
                ExternT* to_end,

                ExternT*& to_next) const;
(1)
protected:

virtual result do_unshift( StateT& state,
                           ExternT* to,
                           ExternT* to_end,

                           ExternT*& to_next) const;
(2)
1) 公开成员函数,调用最终导出类的成员函数 do_unshift
2) 若此 codecvt 所表示的编码依赖状态,而 state 表示的转换状态不是初始迁移状态,则写入返回初始迁移状态所需的字符。字符被写入首元素为 to 所指向的字符数组。不写入多于 to_end-to 个字符。更新参数 to_next 以指向最后写入字符的后一位置。

返回值

std::codecvt_base::result 类型值,指示成功状况如下:

ok 已写入所有所需字符。 state 现在表示初始迁移状态
partial 输出缓冲区中空间不足。 to_next == to_end
error 出现未指明的错误
noconv 编码不依赖状态,不需要终止序列

非转换特化 std::codecvt<char, char, std::mbstate_t> 始终返回 std::codecvt_base::noconv

注意

此函数为 std::basic_filebuf::close() 所调用,并在终止化依赖状态的多字节序列的情形中被调用。

示例

参阅

给定状态,转换宽字符到其多字节表示
(函数)
[虚]
从 internT 转换字符串为 externT 转换字符串,如在写入文件时
(虚受保护成员函数)