使用MultiByteToWideChar 和 WideCharToMultiByte 函数
//多字节字符转为宽字符
char st[20] = {"多字节字符串!"};
DWORD dwNum = MultiByteToWideChar (CP_ACP, 0, st, -1, NULL, 0);
wchar_t *pwText=new wchar_t[dwNum];
if(!pwText)
{
delete []pwText;
}
MultiByteToWideChar (CP_ACP, 0, st, -1, pwText, dwNum);
delete []pwText;
//宽字符转为多字节字符的代码如下:
wchar_t wText[20] = {L"宽字符!"};
DWORD dwNum = WideCharToMultiByte(CP_OEMCP,NULL,wText,-1,NULL,0,NULL,FALSE);
char *psText;
psText = new char[dwNum];
if(!psText)
{
delete []psText;
}
WideCharToMultiByte (CP_OEMCP,NULL,wText,-1,psText,dwNum,NULL,FALSE);
delete []psText;
使用mbstowcs_s 和 wcstombs_s 函数
// 多字节字符串转换成宽字节字符串
char *orig = "Hello, World!";
cout << orig << " (char *)" << endl;
size_t origsize = strlen(orig) + 1;
const size_t newsize = 100;
size_t convertedChars = 0;
wchar_t wcstring[newsize];
mbstowcs_s(&convertedChars, wcstring, origsize, orig, _TRUNCATE);
wcscat_s(wcstring, L" (wchar_t *)");
wcout << wcstring << endl;
// 宽字节字符串转换成多字节字符串
wchar_t *orig = L"Hello, World!";
wcout << orig << L" (wchar_t *)" << endl;
size_t origsize = wcslen(orig) + 1;
const size_t newsize = 100;
size_t convertedChars = 0;
char nstring[newsize];
wcstombs_s(&convertedChars, nstring, origsize, orig, _TRUNCATE);
strcat_s(nstring, " (char *)");
cout << nstring << endl;
msdn上更详细描述
http://msdn.microsoft.com/en-us/library/ms235631(VS.80).aspx
“char*和wchar*转换多字节字符串与UNICODE字符串转换”的更多相关文章 》