std::codecvt<InternT,ExternT,StateT>::unshift, do_unshift
来自 cppreference.cn
定义于头文件 <locale> |
||
public: result unshift( StateT& state, ExternT* to, ExternT* to_end, |
(1) | |
protected: virtual result do_unshift( StateT& state, ExternT* to, ExternT* to_end, |
(2) | |
1) 公有成员函数,调用派生程度最高的类的
do_unshift
成员函数。2) 若此
codecvt
facette 所表示的编码是状态依赖的,且 state 表示的转换状态并非初始转移状态,则写入返回到初始转移状态所需的字符。字符被写入到字符数组中,该数组的首元素由 to 指示。写入的字符不超过 to_end - to 个。参数 to_next 更新为指向所写入的最后一个字符之后的位置。目录 |
[edit] 返回值
一个 std::codecvt_base::result 类型的值,指示成功状态,如下所示
ok
|
所有必需的字符都已写入。state 现在表示初始转移状态。 |
部分
|
输出缓冲区空间不足。to_next == to_end。 |
error
|
发生了一个未指明的错误。 |
noconv
|
编码不是状态依赖的,不需要终止序列。 |
[edit] 注意
此函数由 std::basic_filebuf::close() 和其他在结束状态依赖多字节字符序列时的情况调用。
[edit] 示例
本节不完整 原因:无示例 |
[edit] 缺陷报告
下列更改行为的缺陷报告追溯地应用于以前出版的 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 |
未要求 |
[edit] 参阅
将宽字符转换为其多字节表示,给定状态 (函数) | |
[虚] |
将字符串从 InternT 转换为 ExternT ,例如写入文件时(虚保护成员函数) |