C 庫函數– mbstowcs()
描述
C庫函數size_t mbstowcs(schar_t *pwcs, const char *str, size_t n)把參數str所指向的多字節字符的字符串轉換為參數pwcs所指向的數組。
聲明
下面是mbstowcs() 函數的聲明。
size_t mbstowcs(schar_t *pwcs, const char *str, size_t n)
參數
- pwcs --指向一個wchar_t元素的數組,數組長度足以存儲一個最大字符長度的寬字符串。
- str --要被轉換的多字節字符字符串。
- n --要被轉換的最大字符數。
返回值
該函數返迴轉換的字符數,不包括結尾的空字符。 如果遇到一個無效的多字節字符,則返回-1 值。
實例
下面的實例演示了mbstowcs() 函數的用法。
#include <stdio.h> #include <stdlib.h> #include <string.h> int main() { int len; char *pmbnull = NULL; char *pmb = (char *)malloc( MB_CUR_MAX ); wchar_t *pwc = L"Hi"; wchar_t *pwcs = (wchar_t *)malloc( sizeof( wchar_t )); printf("转换为多字节字符串\n"); len = wcstombs( pmb, pwc, MB_CUR_MAX); printf("被转换的字符 %d\n", len); printf("第一个多字节字符的十六进制值:%#.4x\n", pmb); printf("转换回宽字符字符串\n"); len = mbstowcs( pwcs, pmb, MB_CUR_MAX); printf("被转换的字符 %d\n", len); printf("第一个宽字符的十六进制值:%#.4x\n\n", pwcs); return(0); }
讓我們編譯並運行上面的程序,這將產生以下結果:
转换为多字节字符串 被转换的字符 1 第一个多字节字符的十六进制值:0x19a60010 转换回宽字符字符串 被转换的字符 1 第一个宽字符的十六进制值:0x19a60030