名稱空間
變體
操作

std::mbrtoc8

來自 cppreference.com
< cpp‎ | string‎ | multibyte
定義於標頭檔案 <cuchar>
std::size_t mbrtoc8( char8_t* pc8,

                     const char* s,
                     std::size_t n,

                     std::mbstate_t* ps );
(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 是空指標,則忽略 npc8 的值,並且此呼叫等效於 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