Namespaces
Variants

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

From cppreference.net
定义于头文件 <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 facet 所表示的编码为状态依赖型,且 state 表示非初始移位状态的转换状态,则写入返回初始移位状态所需的字符。这些字符将被写入到由 to 指向首元素的字符数组中。写入的字符数不超过 to_end - to 。参数 to_next 将更新为指向最后写入字符的后一位置。

目录

返回值

类型为 std::codecvt_base::result 的值,用于指示成功状态如下:

ok 所有必要字符均已写入。 state 当前表示初始移位状态
partial 输出缓冲区空间不足。 to_next == to_end
error 发生未指定错误
noconv 编码不依赖状态,无需终止序列

注释

此函数由 std::basic_filebuf::close() 调用,并在其他需要完成状态依赖的多字节字符序列的情况下被调用。

示例

缺陷报告

以下行为变更缺陷报告被追溯应用于先前发布的C++标准。

缺陷报告 适用标准 发布时行为 正确行为
LWG 305 C++98 std:: codecvt < wchar_t , char , std:: mbstate_t > :: do_unshift
被要求不写入任何字符
无此要求
LWG 380 C++98 返回 partial 的含义是"需要更多字符来完成终止",但实际未提供任何字符 修正为表示
缓冲区空间不足
LWG 381 C++98 未要求 state 必须有效,且当 state 无效时返回 error 要求 state 必须有效,
返回 error 表示发生错误
LWG 664 C++98 std:: codecvt < char , char , std:: mbstate_t > :: do_unshift
被要求不写入任何字符
无此要求
LWG 665 C++98 std:: codecvt < char , char , std:: mbstate_t > :: do_unshift
被要求返回 noconv
无此要求

另请参阅

将宽字符转换为其多字节表示形式,给定状态
(函数)
[virtual]
将字符串从 InternT 转换为 ExternT ,例如写入文件时
(虚受保护成员函数)