读书人

string类型转化到UCS2类型?该怎么处理

发布时间: 2012-05-29 12:16:00 作者: rapoo

string类型转化到UCS2类型?
事情是这样的,文本内容存储在string变量中需要转化为UCS2类型
使用了

C/C++ code
MultiByteToWideChar
这个函数,控制台打印了一下出现的乱七八糟的。

[解决办法]
C/C++ code
char TestStrIn[]="Ansi字符串";WCHAR OutBuff[256];::MultiByteToWideChar(CP_ACP, 0, TestStrIn, -1, OutBuff, _countof(OutBuff));
[解决办法]
C/C++ code
/*--------------------------*/// UCS2编码// 输入: pSrc - 源字符串指针//       nSrcLength - 源字符串长度// 输出: pDst - 目标编码串指针// 返回: 目标编码串长度/*----------------------------*/int gsmEncodeUcs2(const char* pSrc, unsigned char* pDst, int nSrcLength){     int nDstLength;        // UNICODE宽字符数目     WCHAR wchar[128];  // UNICODE串缓冲区      // 字符串-->UNICODE串     nDstLength = MultiByteToWideChar(CP_ACP, 0, pSrc, nSrcLength, wchar, 128);      // 高低字节对调,输出     for(int i=0; i<nDstLength; i++)     {         *pDst++ = wchar[i] >> 8;         // 先输出高位字节         *pDst++ = wchar[i] & 0xff;       // 后输出低位字节     }      // 返回目标编码串长度     return nDstLength * 2;} /*----------------------------------------------------*/// UCS2解码// 输入: pSrc - 源编码串指针//       nSrcLength -  源编码串长度// 输出: pDst -  目标字符串指针// 返回: 目标字符串长度/*-------------------------------------------------------*/int gsmDecodeUcs2(const unsigned char* pSrc, char* pDst, int nSrcLength){     int nDstLength;        // UNICODE宽字符数目     WCHAR wchar[128];  // UNICODE串缓冲区      // 高低字节对调,拼成UNICODE     for(int i=0; i<nSrcLength/2; i++)     {         wchar[i] = *pSrc++ << 8;    // 先高位字节         wchar[i] |= *pSrc++;        // 后低位字节     }      // UNICODE串-->字符串     nDstLength = WideCharToMultiByte(CP_ACP, 0, wchar, nSrcLength/2, pDst, 160, NULL, NULL);      // 输出字符串加个结束符     pDst[nDstLength] = '\0';      // 返回目标字符串长度     return nDstLength;} 

读书人网 >C++

热点推荐