C語言uchar頭文件(uchar.h)中c32rtomb函數的用法及代碼示例。
用法:
size_t c32rtomb ( char * pmb, char32_t c32, mbstate_t * ps );
將32位字符轉換為多字節序列
如果__STD_UTF_32__被定義為,c32應遵循UTF-32編碼。
該函數使用(並更新)由以下內容描述的換檔狀態ps。如果ps是一個空指針,該函數使用其自己的內部換檔狀態,隻有在調用此函數時才需要進行更改。
如果c32是一個空的32位字符,該函數將重置移位狀態並存儲一個空字節,之後是恢複初始移位狀態所需的任何移位序列。
使用空指針作為對函數的調用mb也會重置換檔狀態(並忽略參數c32)。
這是char32_t版本wcrtomb(<cwchar>)。
參數
- pmb
- 指向足以容納多字節序列的數組的指針。
當前語言環境中字符的多字節序列的最大長度為MB_CUR_MAX個字節。
或者,可以使用空指針調用該函數,在這種情況下,該函數將重置移位狀態(ps(或它自己的內部狀態)返回初始狀態,並返回零。 - c32
- 類型的32位字符char32_t。
- ps
- 指向一個指針mbstate_t定義轉換狀態的對象。
返回值
寫入的多字節序列的大小mb(以字節為單位),包括任何移位字符。可能為零。如果沒有字符對應,則函數返回(size_t)-1和集errno至EILSEQ。
如果mb是一個空指針,該函數不存儲任何字節mb,因此返回零。
示例
/* c32rtomb example */
#include <wchar.h>
#include <uchar.h>
#include <stdio.h>
#include <stdlib.h>
int main() {
const char32_t* pt = U"Juan Souli\u00e9";
char buffer [MB_CUR_MAX];
int i;
size_t length;
mbstate_t mbs;
mbrlen (NULL,0,&mbs); /* initialize mbs */
while (*pt) {
length = c32rtomb(buffer,*pt,&mbs);
if ((length==0)||(length>MB_CUR_MAX)) break;
for (i=0;i<length;++i) putchar (buffer[i]);
++pt;
}
return 0;
}
可能的輸出:
Juan Soulié |
相關用法
注:本文由純淨天空篩選整理自C標準庫大神的英文原創作品 C c32rtomb function。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。