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

原文地址:https://www.cnblogs.com/beijixing135132/p/3249004.html