mbTowc ()- 将多字节字符转换为宽字符

格式

#include <stdlib.h>
int mbtowc(wchar_t *pwc, const char *string, size_t n);

语言级别

ANSI

线程安全

False

请改为使用 mbrtowc()

语言环境敏感

此函数的行为可能受当前语言环境的 LC_CTYPE 类别影响。 如果在编译命令上指定了 LOCALETYPE (*LOCALEUCS2) 或 LOCALETYPE (*LOCALEUTF) ,那么此函数也可能受当前语言环境的 LC_UNI_CTYPE 类别影响。 有关更多信息,请参阅 了解 CCSID 和语言环境

宽字符函数

有关更多信息,请参阅 宽字符

描述

mbtowc() 函数首先确定 string所指向的多字节字符的长度。 然后,它将多字节字符转换为宽字符,如 mbstowcs中所述。 最多检查 n 个字节。

返回值

如果 stringNULL,那么 mbtowc() 函数将返回:
  • 当活动语言环境为混合字节时非零。 该函数初始化状态变量。
  • 否则为 0
如果 string 不是 NULL,那么 mbtowc() 函数将返回:
  • 0 如果 string 指向空字符
  • 包含转换后的多字节字符的字节数
  • -1 如果 string 指向的不是有效的多字节字符。

如果发生转换错误,那么 errno 可能设置为 ECONVERT

示例

此示例使用 mblen()mbtowc() 函数将多字节字符转换为单个宽字符。
#include <stdio.h>
#include <stdlib.h>
 
#define LOCNAME "/qsys.lib/mylib.lib/ja_jp959.locale"
/*Locale created from source JA_JP and CCSID 939 */
 
int length, temp;
char string [] = "\x0e\x41\x71\x0f";
wchar_t arr[6];
 
int main(void)
{
   /* initialize internal state variable */
   temp = mbtowc(arr, NULL, 0);            
 
   setlocale (LC_ALL, LOCNAME);
   /* Set string to point to a multibyte character. */
   length = mblen(string, MB_CUR_MAX);
   temp = mbtowc(arr,string,length);
   arr[1] = L'\0';
   printf("wide character string: %ls",arr);
}

相关信息