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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值