std::codecvt<InternT,ExternT,StateT>:: unshift, do_unshift
|
定义于头文件
<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
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
,例如写入文件时
(虚受保护成员函数) |