C语言 <stdlib.h> 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元素数组的指针,该数组足够长以存储一个宽字符串,最大长度为max个字符。
    • str-这是要解释的C多字节字符串。
    • n-这是要解释的最大wchar_t个字符。
  • 返回值

    此函数返回翻译的字符数,不包括结尾的空字符。如果遇到无效的多字节字符,则返回-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("Converting to multibyte string\n");
       len = wcstombs( pmb, pwc, MB_CUR_MAX);
       printf("Characters converted %d\n", len);
       printf("Hex value of first multibyte character: %#.4x\n", pmb);
       
       printf("Converting back to Wide-Character string\n");
       len = mbstowcs( pwcs, pmb, MB_CUR_MAX);
       printf("Characters converted %d\n", len);
       printf("Hex value of first wide character %#.4x\n\n", pwcs);
       
       return(0);
    }
    
    尝试一下
    让我们编译并运行上面的程序,它将产生以下结果-
    
    Converting to multibyte string
    Characters converted 1
    Hex value of first multibyte character: 0x19a60010
    Converting back to Wide-Character string
    Characters converted 1
    Hex value of first wide character 0x19a60030