std::codecvt<InternT,ExternT,StateT>::unshift, do_unshift
From cppreference.com
| ヘッダー <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) | |
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 メンバ関数) |