[DEMO]宽字节与多字节的相互转换
仅适用Windows平台
// main.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//
//C 头文件,扩展名为.c或.cpp时用
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <locale.h>
//C++头文件,只能扩展名为.cpp时用
//#include <iostream>
//#include <string>
//#include <locale>
int main()
{
setlocale(LC_ALL, "");
const char* csz = "中国cn";
size_t len = 0;
errno_t err = 0;
wchar_t* wsz = NULL;
mbstowcs_s(&len, NULL, 0, csz, 0); //len是字符数,包括末尾0
//len = strlen(csz) * sizeof(char) + 1;
wsz = (wchar_t*)malloc(len * sizeof(wchar_t));
err = mbstowcs_s(NULL, wsz, len, csz, _TRUNCATE); //_TRUNCATE,空间不足时截断,末尾置0
//一般不会出错 err = 0
if(!err)
printf("%ws\n", wsz);
char* sz = NULL;
wcstombs_s(&len, NULL, 0, wsz, 0); //len是字符数,包括末尾0
//len = wcslen(wsz) * sizeof(wchar_t) + 1;
sz = (char*)malloc(len * sizeof(char));
err = wcstombs_s(NULL, sz, len, wsz, _TRUNCATE); //_TRUNCATE,空间不足时截断,末尾置0
//一般不会出错 err = 0
if (!err)
printf("%s\n", sz);
free(wsz);
free(sz);
}