#include<iostream>
#include<Windows.h>
#include<tchar.h>
using namespace std;
void c2w(const char *pchar, wchar_t *pwchar,int len)
{
int clen = strlen(pchar) + 1;
int wclen = MultiByteToWideChar(0,0,pchar,clen,NULL,0);
if(wclen > len)
wclen = len;
MultiByteToWideChar(0,0,pchar,clen,pwchar,wclen);
}
void w2c(const wchar_t *pwchar, char *pchar, int len)
{
int wclen = wcslen(pwchar) + 1;
int clen = WideCharToMultiByte(0,0,pwchar,wclen,NULL,0,NULL,NULL);
if(clen >= len)
clen = len;
WideCharToMultiByte(0,0,pwchar,wclen,pchar,clen,NULL,NULL);
pchar[clen] = 0;
}
/*
注意:
1、最好给len分配足够的空间,否则会出现意想不到的问题.
2、函数传参时会分配给pchar一个空间(空间大小不固定)
*/
void main()
{
wchar_t srcWchar[6] = _T("我是中国人");
char destChar[11];
w2c(srcWchar,destChar,10);
cout<<destChar<<endl;
char srcChar[6]="d中国";
wchar_t destWchar[4];
c2w(srcChar,destWchar,4);
getchar();
}