mbrtoc8
來自 cppreference.com
在標頭檔案 <uchar.h> 中定義 |
||
(自 C23 起) | ||
將窄多位元組字元轉換為 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 的值,並且呼叫等效於 mbrtoc8(nullptr, "", 1, ps)。
如果生成的 UTF-8 程式碼單元是 u8'\0',則轉換狀態 *ps 表示初始移位狀態。
此函式使用的多位元組編碼由當前活動的 C 語言環境指定。
目錄 |
[編輯] 引數
pc8 | - | 指向將寫入生成的 UTF-8 程式碼單元的位置的指標 |
s | - | 指向用作輸入的多位元組字元字串的指標 |
n | - | s 中可檢查的位元組數的限制 |
ps | - | 指向轉換狀態物件的指標,用於解釋多位元組字串 |
[編輯] 返回值
以下適用情況中的第一個
- 0 如果從 s 轉換(並存儲在 *pc8 中,如果非空)的字元是空字元。
- 從 s 成功轉換的多位元組字元的位元組數
[
1,
n]
。 - (size_t)-3 如果編碼由多個程式碼單元組成的字元的下一個 UTF-8 程式碼單元現在已寫入 *pc8。在這種情況下,不處理輸入中的位元組。
- (size_t)-2 如果接下來的 n 個位元組構成一個不完整但目前有效的多位元組字元。不會寫入 *pc8。
- (size_t)-1 如果發生編碼錯誤。不會寫入 *pc8,值 EILSEQ 儲存在 errno 中,並且 *ps 的值未指定。
[編輯] 示例
本節不完整 原因:無示例 |
[編輯] 參考
- C23 標準 (ISO/IEC 9899:2024)
- 7.30.1.1 mbrtoc8 函式
[編輯] 另請參閱
(C23) |
將 UTF-8 字串轉換為窄多位元組編碼 (function) |
C++ 文件 用於 mbrtoc8
|