名稱空間
變體
操作

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

來自 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 facette 所表示的編碼是狀態依賴的,且 state 表示的轉換狀態並非初始轉移狀態,則寫入返回到初始轉移狀態所需的字元。字元被寫入到字元陣列中,該陣列的首元素由 to 指示。寫入的字元不超過 to_end - to 個。引數 to_next 更新為指向所寫入的最後一個字元之後的位置。

目錄

[edit] 返回值

一個 std::codecvt_base::result 型別的值,指示成功狀態,如下所示

ok 所有必需的字元都已寫入。state 現在表示初始轉移狀態。
部分 輸出緩衝區空間不足。to_next == to_end
error 發生了一個未指明的錯誤。
noconv 編碼不是狀態依賴的,不需要終止序列。

[edit] 注意

此函式由 std::basic_filebuf::close() 和其他在結束狀態依賴多位元組字元序列時的情況呼叫。

[edit] 示例

[edit] 缺陷報告

下列更改行為的缺陷報告追溯地應用於以前出版的 C++ 標準。

缺陷報告 應用於 釋出時的行為 正確的行為
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
未要求

[edit] 參閱

將寬字元轉換為其多位元組表示,給定狀態
(函式) [編輯]
[虛]
將字串從 InternT 轉換為 ExternT,例如寫入檔案時
(虛保護成員函式) [編輯]