本来以为转码只能用第三方库或者API的,没想到标准库也带了转码的函数
C语言
用到wcstombs、mbstowcs,编码要用setlocale设置,不过CRT增强版的_wcstombs_l和_mbstowcs_l可以设置局部的locale
#include <locale.h>
#include <stdlib.h>
char* W2A(wchar_t* src)
{
_locale_t lc = _create_locale(LC_CTYPE, ""); // 使用系统设置的locale
size_t size = 0;
_wcstombs_s_l(&size, NULL, 0, src, _TRUNCATE, lc); // 获取缓冲size
char* dst = (char*)malloc(size);
_wcstombs_s_l(&size, dst, size, src, _TRUNCATE, lc);
_free_locale(lc);
return dst;
}
wchar_t* A2W(char* src)
{
_locale_t lc = _create_locale(LC_CTYPE, ""); // 使用系统设置的locale
siz