wctomb函数
概要:
#include <stdlib.h> int wctomb(char *s, wchar_t wc);
描述:
该函数将宽字符转换为多字节字符序列。
该函数确定参数wc对应的多字节字符的字节数(包括移位序列(shift sequences)。);如果参数s不是空指针,函数将对应的多字节字符序列存入参数s指向的数组中,最多可以存储MB_CUR_MAX个字符。如果参数wc是空宽字符,将存入空字节,该空字节会被前置用以恢复初始移位状态(initial shift state)的移位序列,并且函数处于初始转换状态(initial conversion state)。
wctomb函数会受当前语言环境LC_CTYPE类别的影响。函数在程序启动时处于初始转换状态,调用wctomb(NULL, 0);可以返回该状态。随后在参数s不是空指针的情况下调用该函数,内部转换状态将根据需要进行改变。改变LC_CTYPE类别会导致函数的转换状态不确定。
实现应像没有库函数调用wctomb函数一样。
ISO/IEC 9899:2018标准定义了该函数的安全版本wctomb_s。
参数:
指向char类型数组首元素的指针,转换得到的多字节字符序列将存储在该数组中。
wchar_t类型的宽字符。
返回值:
在参数s是空指针的情况下,如果多字节字符的编码与状态有关(state-dependent encodings),函数返回一个非0值;如果多字节字符的编码与状态无关,函数返回0。
在参数s不是空指针的情况下,如果参数wc存在对应的有效多字节字符,函数返回多字节字符的字节数;如果参数wc不存在对应的有效多字节字符,函数返回-1。
任何情况下,函数返回值都不会大于宏MB_CUR_MAX。
范例:
|
|
输出:
转换前宽字符的值: 7434
转换后多字节字符各个字节的值: E7 90 B4
注:使用ideone编译。
7434是汉字琴的UTF-16BE编码;E7 90 B4是汉字琴的UTF-8编码。
相关内容:
mblen | 确定多字节字符字节数的函数。 |
mbtowc | 将多字节字符序列转换为宽字符的函数。 |