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 个字节。
返回值
如果 string 为 NULL,那么
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);
}