在学习COM时候看到了字节方面,因为编码有ANSI 还有UNICODE,所以更快学习一下相关的知识。
详细代码见后面,网上资料也很多,总结一下思路:
先计算出转换需要的字节数,把函数其中一个参数设置为-1,很好用,特别是WideCharToMultiByte里面,系统自动帮你计算所需要的字节数;
然后根据字节数创建空间(别忘记删除哈 new 和delete)
然后调用函数转换,根据返回值判断是否成功。
#include <iostream>
#include <wchar.h>
#include <windows.h>
using namespace std;
int main()
{
//多字节转换宽字节
char * ptr = "测试123";
cout << "strlen(ptr)= " << strlen(ptr) <<endl;//返回7=2+2+1+1+1
//计算转换后需要的字节数
int len1 = MultiByteToWideChar(CP_ACP, 0, ptr, -1, NULL, 0);
cout << "len1: " << len1 << endl;//返回6=5个字符+1个结束符
//转换
wchar_t * pwtr = new wchar_t[len1];
int len2 = MultiByteToWideChar(CP_ACP, 0, ptr, -1, pwtr, len1);
cout << "len2: " << len2 <&l