下载此文档

vc宽窄字符串-16.09.13.doc


文档分类:IT计算机 | 页数:约9页 举报非法文档有奖
1/9
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/9 下载此文档
文档列表 文档介绍
宽窄字符串
Hanford
2016年09月13日
目录
第1章宽窄字符串 1
API 1
C函数 3
_bstr_t 4
ATL 宏 4
A2W 4
CA2W 5
CString 5
总结 6
第1章宽窄字符串
VC++中的字符串有两种,如下所示:
const char* pA = "窄字符串,即ANSI字符串";
const wchar_t* pW = L"宽字符串,即Unicode字符串";
本文将对这两种字符串的相互转换进行说明。
API
宽窄字符串的相互转换,最终都要调用两个API函数:MultiByteToWideChar、WideCharToMultiByte。下面的三段代码演示了如何使用这两个函数:
{//Ansi ==> Unicode
const char* pA = "字符串";
int nLenU = MultiByteToWideChar(CP_ACP,0,pA,-1,NULL,0);
wchar_t* pW = (wchar_t*)malloc(nLenU * sizeof(wchar_t));
MultiByteToWideChar(CP_ACP,0,pA,-1,pW,nLenU);
MessageBoxW(GetActiveWindow(),pW,L"Ansi ==> Unicode",MB_OK);
free(pW);
}
{//Unicode ==> Ansi
const wchar_t* pW = L"字符串";
int nLenA = WideCharToMultiByte(CP_ACP,0,pW,-1
,NULL,0,NULL,NULL);
char* pA = (char*)malloc(nLenA);
WideCharToMultiByte(CP_ACP,0,pW,-1,pA,nLenA,NULL,NULL);
MessageBoxA(GetActiveWindow(),pA,"Unicode ==> Ansi",MB_OK);
free(pA);
}
{//UTF8 ==> Unicode
const char* pUTF8 = "\xE5\xAD\x97\xE7\xAC\xA6\xE4\xB8\xB2";
int nLenU = MultiByteToWideChar(CP_UTF8,0,pUTF8,-1
,NULL,0);
wchar_t* pW = (wchar_t*)malloc(nLenU * sizeof(wchar_t));
MultiByteToWideChar(CP_UTF8,0,pUTF8,-1,pW,nLenU);
MessageBoxW(GetActiveWindow(),pW,L"UTF8 ==> Unicode",MB_OK);
free(pW);
}
说明:
1、转换时MultiByteToWideChar、WideCharToMultiByte均调用了两次。第一次用来获取转换后的字符数,根据此数值分配内存。第二次完成编码转换;
2、CP_ACP、CP_UTF8说明了窄字符串的代码页。其中CP_A

vc宽窄字符串-16.09.13 来自淘豆网m.daumloan.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数9
  • 收藏数0 收藏
  • 顶次数0
  • 上传人plm860108
  • 文件大小76 KB
  • 时间2018-08-02