std::codecvt<InternT,ExternT,StateT>::unshift, do_unshift
來自 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
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 ,例如寫入檔案時(虛保護成員函式) |