(转载)WCHAR与CHAR的转换
来源:互联网 发布:淘宝的便宜苹果手机 编辑:程序博客网 时间:2024/05/15 16:18
(转载) WCHAR与CHAR的转换
Windows API中很多参数是LPTSTR类型的,关于这个LPTSTR很多人都解释过了,没什么好说的
#ifdef UNICODE
typedef LPWSTR LPTSTR
#else
typedef LPSTR LPTSTR
#endif
说白了,就是一个自适应的字符指针,在2005环境下当你调用某个包含 LPTSTR 参数的函数的时候,如果你试图用一个 char* 糊弄,那就会残忍的报错了,怎么办呢,土办法,你不要宽字符吗,好,我转。同理,你不憎恨宽字符吗,我转。
网上能找到很多关于LPSTR与LPTSTR互相转换的帖子,不幸的是都是一个片断,拿过来肯定不能用的。
LPSTR与LPTSTR之间的转换方法有很多,不过我就会两种,一个是ATL宏,还有一个是API
这里要说一下那个ATL宏,是的,很简单
A2W( ) W2A( )
一眼就能看明白,A表示ANSI,W表示Wide,还有好多好多,可以去MSDN查一查,多好用的宏阿,可不能白用
#include <AtlBase.h>
#include <AtlConv.h>
这两句不能少,还有,用宏之前加一句 USES_CONVERSION ,要不然直接报错了
用这个宏还有一个问题,当我用 new 分了一块内存然后掉了这个宏,最后释放的时候报错了,怎么办?作为一个懒人我是不会去试图理解那么复杂的事的,我用数组,内存管理我不管
粗糙吧,是,不粗糙就用函数
int MultiByteToWideChar(
UINT CodePage, // code page | CP_ACP
DWORD dwFlags, // character-type options | MB_PRECOMPOSED
LPCSTR lpMultiByteStr, // string to map
int cbMultiByte, // number of bytes in string
LPWSTR lpWideCharStr, // wide-character buffer
int cchWideChar // size of buffer
);
int WideCharToMultiByte(
UINT CodePage, //code page | CP_ACP
DWORD dwFlags, //performance and mapping flags | WC_COMPOSITECHECK
LPCWSTR lpWideCharStr, //wide-character string
int cchWideChar, //number of chars in string
LPSTR lpMultiByteStr, //buffer for new string
int cbMultiByte, //size of buffer
LPCSTR lpDefaultChar, //default for unmappable chars |NULL
LPBOOL lpUsedDefaultChar //set when default char used |NULL
);
是的,排版是胡来的,能看清就行,我觉得说得够清楚了,只是那么多参数让人眼花缭乱,实在懒得去深究,所以我写了几个默认值,在 “|”后面,这是对像我这样的懒人和一些普通转换适用的,如果某高手看见了想指导我,好的,其实我也是一知半解。
基本上就这么多
应某人要求,加上最后一句 #Include <windows.h>
- (转载)WCHAR与CHAR的转换
- WCHAR与CHAR的转换
- WCHAR与CHAR的转换
- WCHAR与CHAR的转换
- CString、wchar和char类型的相互转换(转载)
- wchar[] 与 char[] 转换
- wxString类与char,wchar的相互转换(转)
- wxString类与char,wchar的相互转换(转)
- char 与 wchar之间的转换
- wchar与char字符转换的探究
- VC 中char 与 wchar的转换
- VC 中char 与 wchar的转换
- char* wchar* char wchar转换 (转)
- wchar与char互相转换
- CString、wchar和char相互转换(转载)
- CString、wchar和char相互转换(转载)
- wchar与char的转换,wchar与string类型转换,vs配置
- WCHAR和char的转换
- struts2中s:select标签的使用
- 我看程序员
- 【转载】如何:在各种字符串类型之间进行转换
- 仿真
- 昔忧(CEU)验证码识别引擎v1.0正式发布.
- (转载)WCHAR与CHAR的转换
- 昔忧(CEU)验证码识别引擎v1.2重大更新
- JAVA初级面试题知识点第一季
- 墨菲定律、二八法则、马太效应、手表定理、“不值得”定律、彼得原理、零和游戏、华盛顿合作规律、酒与污水定律、水桶定律、蘑菇管理原理、钱的问题、奥卡姆剃刀等13条是左右人生的金科玉律
- 一个存储过程的例子
- 昔忧(CEU)验证码识别引擎v1.25版本发布
- web developer tips (47):脚本远程调试需关闭IE增强安全配置
- 不做软件开发做什么?困惑中。。。
- FCKeditor 在Apache+Tomcat整合的环境中使用调试的问题