win32中的常用类型转换
1、win32中关于char* 的类型
win32中:
const char*====LPCTSTR (Long Ptr const tchar )就是不能修改执行的值的内容
char *=====LPSTR
在win32中可以使用它们的等价代替者,这里的每个字符是占8位的
LPWSTR和LPCWSTR就是相对于上边两个指针来说的,但是每个字符占据16位,是宽字符,即w_char
CString中的字符就是这种宽字符
#ifdef _UNICODE
typedef const wchar_t * LPCTSTR
#else
typedef const char * LPCTSTR
#endif
2、常用类型转换
从一些类型的变量中获取指向其字符串的指针
(1)从CString中获得指针:(LPSTR)(LPCTSTR)str;//str是CString类型
(2)从_variant_t中获得指针:_com_util::ConvertBSTRTOString((_bstr_t)vl);//vl是_variant_t类型
字符串转化为其他类型:atoi、atol、atof
其他类型转化为CString,使用CString的Format函数来转换
str.fromat(“%d”,i)//int转化为CString
3、消息处理中经常将WPARAM或LPARAM32位数据分解为两个16位(WORD)
使用:LOWORD、HIWORD
或者将16位(WORD)分解为高低两个8位(BYTE)
使用LOBYTE、HIBYTE
4、CString转化为char*:
(1)使用GetBuffer(),之后要立即调用ReleaseBuffer
因为GetBuffer时新分配了空间,调用ReleaseBuffer的作用是使新分配空间的有效数据区动态保存起来,
这样下次另一个CString再使用GetBuffer时不会冲掉上个的空间的有效长度
(2)使用memcpy
(3)使用LPCTSTR强制转换
CString类型转化为char[]:使用sprintf(char[],"%s",(LPCSTR)CString)
或者使用strcpy