原创文章,转载请注明出处https://blog.csdn.net/aaron_lyn1985/article/details/80053910
多字节(char*)和宽字符(wchar_t*)之间的转换有几种方式,下面按照从通用到特殊的顺序逐一介绍。
1.C库函数
1.1 关键函数
(1)setlocale()
功能:配置地域化信息
头文件:<locale.h>
函数原型:
char *setlocale (int category, const char * locale);
函数参数:
category:表示对本地化的某项内容进行设置,可取如下值:
LC_ALL 包括下面的全部选项都要
LC_COLLATE 配置字符串比较
C_CTYPE 配置字符类别及转换,例如全变大写 strtoupper()
LC_MONETARY 配置金融货币
LC_NUMERIC 配置小数点后的位数
LC_TIME 配置时间日期格式,与 strftime() 合用
locale:表示本地域代号
返回值:如果为NULL,则返回当前的locale名称(一般为C);如果非空,则根据category和locale进行设置,如果成功,则返回新的locale名称(地域名称),如果失败,则返回 NULL。
(2)wcstombs_s()
功能:将宽字符编码字符串转换成多字节编码字符串
头文件: < stdlib.h>
函数原型:
errno_t __cdecl wcstombs_s(size_t * _PtNumOfCharConverted, char * _Dst, size_t _DstSizeInBytes, const wchar_t * _Src, size_t _MaxCountInBytes);
函数参数:
PtNumOfCharConverted:指向转换后的字符串的长度加上结束符(单位字节)
Dst:指向转换后的字符串首地址
DstSizeInBytes:目的地址最大字节空间