Namespaces
Variants

std::codecvt<InternT,ExternT,StateT>:: unshift, do_unshift

From cppreference.net
ヘッダーで定義 <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)
1) パブリックメンバー関数。最も派生したクラスのメンバー関数 do_unshift を呼び出します。
2) この 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 が有効であることが要求されておらず、
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 への文字列変換(ファイル書き込み時など)
(仮想保護メンバ関数)