字符编码问题:WCHAH(即UNICODE)和char之间怎么样转化呢?
原讨论链接:http://community.youkuaiyun.com/expert/topicview1.asp?id=724830
所属论坛:基础类 审核组:VC/MFC
提问者:duankuanjun 解决者:
感谢:acptvc
关键字:VC/MFC 函数 基础类 转换 字符 串 int 参看 编码 原型 缓冲区 unicode
答案:
字符编码问题:WCHAH(即UNICODE)和char之间怎么样转化呢?
--------------------------------------------------------------- 您可以使用WideCharToMultiByte函数来把UNICODE字符串转成一个新的普通的字符串,反之则使用函数MultiByteToWideChar把普通字符串转成UNICODE字符串。
MultiByteToWideChar函数原型如下:
int MultiByteToWideChar(
UINT CodePage, // 指定将进行转换的代码页,可赋为CP_ACP表示ANSI代码页
DWORD dwFlags, // 字符的附加控制,一般不使用,传递0
LPCSTR lpMultiByteStr, // 要转换的串
int cbMultiByte, // 要转换的串的长度
LPWSTR lpWideCharStr, // UNICODE缓冲区
int cchWideChar // UNICODE缓冲区大小
);
其中参数cchWideChar的值如果设为零,则返回需要的缓冲区的大小(UNICODE),可以在申请适当的缓冲区大小之后再次调用。
WideCharToMultiByte函数原型如下
int WideCharToMultiByte(
UINT CodePage, // 与上类似
DWORD dwFlags,
LPCWSTR lpWideCharStr,
int cchWideChar,
LPSTR lpMultiByteStr,
int cbMultiByte,
LPCSTR lpDefaultChar, // 出现不能转换的字符时使用的缺省字符
LPBOOL lpUsedDefaultChar // 当缺省字符被使用时设为有效
);