MultiByteToWideChar将多字节字符串转换为宽字符字符串,函数原型如下:
int MultiByteToWideChar(
__in UINT CodePage, //与多字节字符串关联的一个代码页值,一般设为CP_ACP
__in DWORD dwFlags, //指定额外的转换控制,一般为0
__in LPCSTR lpMultiByteStr, //要转换的多字节字符串
__in int cbMultiByte, //多字节字符串字节数,为-1则自动判断字符串长度
__out LPWSTR lpWideCharStr, //转换后Unicode字符串的缓冲区
__in int cchWideChar //接收缓冲区最大长度(字符数)
);
一般按下面步骤将一个多字节字符串转换为Unicode形式:
1)调用MultiByteToWideChar,为lpWideCharStr传入NULL,为cchWideChar传入0,为cbMultiByte传入-1;
2)分配一块足以容纳转换后的Unicode字符串的内存,它的大小是1)中函数返回值乘以sizeof(wchar_t);
3)再次调用MultiByteToWideChar,这次将缓冲区地址作为lpWideCharStr参数的值传入,将1)中函数返回值乘以sizeof(w_char_t)后得到的大小作为cchWideChar参数的值传入;
4)使用转换后的字符串;
5)释放Unicode字符串占用的内存块。