std::codecvt<InternT,ExternT,StateT>::unshift, do_unshift
本地环境与平面 | |||||||||||||||||||||
本地环境 | |||||||||||||||||||||
平面类别基类 | |||||||||||||||||||||
ctype(字符类别)平面 | |||||||||||||||||||||
numeric(数值)平面 | |||||||||||||||||||||
collate(对照比较)平面 | |||||||||||||||||||||
time(时间)平面 | |||||||||||||||||||||
monetary(货币)平面 | |||||||||||||||||||||
messages(消息)平面 | |||||||||||||||||||||
字符分类与转换 | |||||||||||||||||||||
字符分类 | |||||||||||||||||||||
转换 | |||||||||||||||||||||
|
|||||||||||||||||||||
编码转换平面 | |||||||||||||||||||||
|
|
||||||||||||||||||||
C 本地环境 | |||||||||||||||||||||
在标头
<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) | |
do_unshift
。codecvt
表示的编码依赖状态,并且 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 | 不再要求 |
参阅
给定状态,转换宽字符到其多字节表示 (函数) |
|
[虚]
|
将字符串从 InternT 转换到
ExternT ,例如在写入文件时 (虚受保护成员函数) |