std::c8rtomb
來自 cppreference.com
定義於標頭檔案 <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
|