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
, является зависимой от состояния, и
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++.
| DR | Применяется к | Поведение в опубликованной версии | Корректное поведение |
|---|---|---|---|
| LWG 305 | C++98 |
std::
codecvt
<
wchar_t
,
char
,
std::
mbstate_t
>
::
do_unshift
требовалось не записывать никаких символов |
не требуется |
| LWG 380 | C++98 |
значение возврата
partial
означало 'необходимо предоставить больше символов
для завершения преобразования', но символы не предоставлялись |
исправлено на указание
недостаточного размера буфера |
| LWG 381 | C++98 |
state
не требовалось быть валидным, и
error возвращался если state невалиден |
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
, например при записи в файл
(виртуальная защищённая функция-член) |