C 程式設計/wchar.h/mbrtowc
mbrtowc() 函式用於使用轉換狀態將多位元組字元轉換為寬字元。
mbrtowc() 使用轉換狀態將多位元組字元轉換為寬字元
#include <wchar.h>
size_t mbrtowc(wchar_t *pwc, const char *s, size_t n, mbstate_t *ps);
假設 s 是一個空指標,則 mbrtowc() 函式可以呼叫為
mbrtowc(NULL, "", 1, ps);
這裡 pwc 和 n 的值被忽略。
如果 s 不為空,函式應該檢查以 s 指向的第一個位元組開始的 n 個位元組,以確定完成下一個字元所需的位元組數,並確定對應寬字元的值。如果 pwc 不為空指標,它會將該值儲存在 pwc 指向的物件中。如果該對應的寬字元是寬空字元,那麼無論描述的最終狀態是什麼,它都是初始轉換狀態。
如果指定的 state 指標(即 ps)為空指標,則 mbrtowc() 函式應使用它自己的 mbstate_t 物件,該物件應在程式開始時初始化為初始轉換狀態。否則,使用 ps 指向的 mbstate_t 物件來描述相關字元序列的當前轉換狀態。
s:
s 用作要轉換或計數的字串的位元組。
n:
n 用來指定要檢查的最大位元組數。
ps:
ps 是轉換狀態。如果為空,則使用內部 mbstate_t 物件。
0:
當下一個計數或更少的位元組完成表示空寬字元的多位元組字元時,它返回 0。
>0:
當下一個計數或更少的位元組完成有效的多位元組字元時,它返回大於零的值(即正值),返回值是完成多位元組字元的位元組數。
-1:
當發生編碼錯誤時,它返回 -1,即下一個計數或更少的位元組沒有為完整且有效的多位元組字元做出貢獻,errno 值將為 EILSEQ,轉換狀態將變得混亂,因為它可以被解釋為更多種方式。
-2
當下一個計數字節為不完整的多位元組字元,並且所有計數字節都被處理時,它返回 -2。
http://pubs.opengroup.org/onlinepubs/009604499/functions/mbrtowc.html