博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

各种字符串类型之间的转换

Posted on 2009-08-20 15:58  方恨少  阅读(320)  评论(0编辑  收藏  举报


  1、函数 WideCharToMultiByte(),转换 UNICODE 到 MBCS。使用范例:

      LPCOLESTR lpw = L"Hello,你好";
size_t wLen = wcslen( lpw ) + 1;  // 宽字符字符长度,+1表示包含字符串结束符
int aLen=WideCharToMultiByte(  // 第一次调用,计算所需 MBCS 字符串字节长度
CP_ACP,
0,
lpw,  // 宽字符串指针
wLen, // 字符长度
NULL,
0,  // 参数0表示计算转换后的字符空间
NULL,
NULL);
LPSTR lpa = new char [aLen];
WideCharToMultiByte(
CP_ACP,
0,
lpw,
wLen,
lpa,  // 转换后的字符串指针
aLen, // 给出空间大小
NULL,
NULL);
// 此时,lpa 中保存着转换后的 MBCS 字符串
... ... ... ...
delete [] lpa;

    2、函数 MultiByteToWideChar(),转换 MBCS 到 UNICODE。使用范例:
      LPCSTR lpa = "Hello,你好";
size_t aLen = strlen( lpa ) + 1;
int wLen = MultiByteToWideChar(
CP_ACP,
0,
lpa,
aLen,
NULL,
0);
LPOLESTR lpw = new WCHAR [wLen];
MultiByteToWideChar(
CP_ACP,
0,
lpa,
aLen,
lpw,
wLen);
... ... ... ...
delete [] lpw;