Defined in header <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) |
do_unshift
of the most derived class.codecvt
facet is state-dependent, and state
represents a conversion state that is not the initial shift state, writes the characters necessary to return to the initial shift state. The characters are written to a character array whose first element is pointed to by to
. No more than to_end - to
characters are written. The parameter to_next
is updated to point one past the last character written.A value of type std::codecvt_base::result
, indicating the success status as follows:
ok | all necessary characters were written. state now represents initial shift state |
partial | not enough space in the output buffer. to_next == to_end |
error | an unspecified error has occurred |
noconv | the encoding is not state-dependent, no termination sequence necessary |
This function is called by std::basic_filebuf::close()
and in other situations when finalizing a state-dependent multibyte character sequence.
The following behavior-changing defect reports were applied retroactively to previously published C++ standards.
DR | Applied to | Behavior as published | Correct behavior |
---|---|---|---|
LWG 305 | C++98 | std::codecvt<wchar_t, char, std::mbstate_t>::do_unshift was required not to write any character | not required |
LWG 380 | C++98 | the meaning of returning partial was 'more characters need tobe supplied to complete termination', but no character is supplied | corrected to indicating insufficient buffer space |
LWG 381 | C++98 | state was not required to be valid, anderror is returned if state is invalid | state is required to be valid, andreturning error indicates an error |
LWG 664 | C++98 | std::codecvt<char, char, std::mbstate_t>::do_unshift was required not to write any character | not required |
LWG 665 | C++98 | std::codecvt<char, char, std::mbstate_t>::do_unshift was required to return noconv | not required |
converts a wide character to its multibyte representation, given state (function) |
|
[virtual] | converts a string from InternT to ExternT , such as when writing to file (virtual protected member function) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/locale/codecvt/unshift