名前空間
変種
操作

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

From cppreference.com
< cpp‎ | locale‎ | codecvt
 
 
 
 
 
ヘッダー <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は初期シフト状態を表す。
部分的 出力バッファに十分なスペースがない。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 への文字列を変換します。
(virtual protected メンバ関数) [編集]
English 日本語 中文(简体) 中文(繁體)