名稱空間
變體
操作

std::c8rtomb

來自 cppreference.com
< cpp‎ | string‎ | multibyte
定義於標頭檔案 <cuchar>
std::size_t c8rtomb( char* s, char8_t c8, std::mbstate_t* ps );
(C++20 起)

將一個 UTF-8 編碼的碼點轉換為窄多位元組字元表示。

如果 s 不是空指標,且 c8 是碼點有效 UTF-8 編碼的最後一個程式碼單元,則該函式確定儲存該碼點的多位元組字元表示所需的位元組數(包括任何移位序列,並考慮當前多位元組轉換狀態 *ps),並將多位元組字元表示儲存在第一個元素由 s 指向的字元陣列中,並根據需要更新 *ps。此函式最多可寫入 MB_CUR_MAX 位元組。

如果 c8 不是碼點表示中的最終 UTF-8 程式碼單元,則函式不寫入 s 指向的陣列,僅更新 *ps

如果 s 是空指標,則呼叫等效於 std::c8rtomb(buf, u8'\0', ps),其中 buf 是某個內部緩衝區。

如果 c8 是空字元 u8'\0',則儲存一個空位元組,前面是恢復初始移位狀態所需的任何移位序列,並且轉換狀態引數 *ps 被更新以表示初始移位狀態。

此函式使用的多位元組編碼由當前活動的 C 語言環境指定。

目錄

[編輯] 引數

s - 指向窄字元陣列的指標,多位元組字元將儲存在此處
c8 - 要轉換的 UTF-8 程式碼單元
ps - 指向轉換狀態物件的指標,用於解釋多位元組字串

[編輯] 返回值

儲存在陣列物件中的位元組數(包括任何移位序列)。當 c8 不是碼點 UTF-8 表示中的最終程式碼單元時,這可能為零。

如果 c8 無效(不構成與有效多位元組字元對應的 char8_t 序列),則宏 EILSEQ 的值儲存在 errno 中,返回 static_cast<std::size_t>(-1),且轉換狀態未指定。

[編輯] 注意

c8rtomb 使用空指標引數 s 的呼叫可能會與對 c8rtomb 使用空指標引數 s 的其他呼叫引入資料競爭。

[編輯] 示例

[編輯] 參閱

(C++20)
將窄多位元組字元轉換為 UTF-8 編碼
(函式) [編輯]
(C++11)
將 UTF-16 字元轉換為窄多位元組編碼
(函式) [編輯]
C 文件,關於 c8rtomb