std::mbrtoc8
來自 cppreference.com
定義於標頭檔案 <cuchar> |
||
std::size_t mbrtoc8( char8_t* pc8, const char* s, |
(C++20 起) | |
將窄多位元組字元轉換為 UTF-8 編碼。
如果 s 不是空指標,則檢查最多 n 位元組的多位元組字元字串,從 s 指向的位元組開始,以確定完成下一個多位元組字元(包括任何移位序列)所需的位元組數。如果函式確定 s 中的下一個多位元組字元是完整且有效的,則將其轉換為 UTF-8 並將第一個 UTF-8 碼元儲存在 *pc8 中(如果 pc8 不是空)。
如果 *s 中多位元組字元的 UTF-8 編碼由多個 UTF-8 碼元組成,則在此函式的首次呼叫後,*ps 會更新,使得下次呼叫 `mbrtoc8` 時會輸出額外的 UTF-8 碼元,而無需考慮 *s。
如果 s 是空指標,則忽略 n 和 pc8 的值,並且此呼叫等效於 std::mbrtoc8(nullptr, "", 1, ps)。
如果生成的 UTF-8 碼元是 u8'\0',則轉換狀態 *ps 表示初始移位狀態。
此函式使用的多位元組編碼由當前活動的 C 語言環境指定。
目錄 |
[edit] 引數
pc8 | - | 指向將寫入結果 UTF-8 碼元的位置的指標 |
s | - | 指向用作輸入的多位元組字元字串的指標 |
n | - | s 中可檢查的位元組數的限制 |
ps | - | 指向轉換狀態物件的指標,用於解釋多位元組字串 |
[edit] 返回值
以下適用情況中的第一個
- 0 如果從 s 轉換的字元(如果非空則儲存在 *pc8 中)是空字元。
- 從 s 成功轉換的多位元組字元的位元組數 [1...n]。
- static_cast<std::size_t>(-3) 如果編碼由多個碼元組成的字元的下一個 UTF-8 碼元已寫入 *pc8。在這種情況下,不從輸入處理任何位元組。
- static_cast<std::size_t>(-2) 如果接下來的 n 個位元組構成一個不完整但目前為止有效的多位元組字元。不會向 *pc8 寫入任何內容。
- static_cast<std::size_t>(-1) 如果發生編碼錯誤。不會向 *pc8 寫入任何內容,值 EILSEQ 儲存在 errno 中,並且 *ps 的值是未指定的。
[edit] 示例
本節不完整 原因:無示例 |
[edit] 參閱
(C++20) |
將 UTF-8 字串轉換為窄多位元組編碼 (函式) |
(C++11) |
將窄多位元組字元轉換為 UTF-16 編碼 (函式) |
C 文件 對應 mbrtoc8
|