使用Windows函数MultiByteWideChar将多字节字符穿转换为宽字节字符串,如下:
int MultiByteToWideChar(
UINT uCodePage,
DWORD dwFlags,
PCSTR pMultiByte,
int cbMultiByte,
PWSTR pWideCharStr,
cchWideChar
);
nCodePage参数标识了与多字节字符关联的一个代码页值。
dwFlags参数允许我们进行额外的控制,他会影响带变音符号(如重音)的字符.但是,一般情况下都不使用这些额外标记,所以传给dwFlags的参数值是0。
pMultiByteStr参数指定要转换的字符
cbMultiByte参数指定字符串的长度(字节数),如果传给cbMultiByte参数的值是-1,函数便可以自动判断源字符的长度。
函数将转换所得的Unicode版本的字符串写入内存缓冲区,其内存地址由pWideCharStr参数指定。必须在参数cchWideChar这个缓冲区的最大长度(字符数).
如果调用MulttiByteToWideChar,并给cchWideChar参数传入0,函数就不会执行转换,而是返回一个宽字符数(包括终止符'\0'),只有当缓冲区能容纳该数量的宽字符是
转换才会成功。一般按照以下不讲讲一个多字节字符转换为Unicode形式.
1.调用MultiByteToWideChar,为pWideCharStr参数传入NULL,为cchWideChar传入0,为cbMutilByte传入-1
2.分配一块足以容纳转换后Unicode字符串的内存,他的大小是上一个MultiByteToWideChar调用的返回值乘以sizeof(wchar_t)
3.在次调用MultiByteToWideChar,这次将缓冲区的地址作为pWideCharStr的参数的值传入
4.使用转换后的字符串
5.释放Unicode字符串占用的内存