VC数据类型转换_第1页
VC数据类型转换_第2页
VC数据类型转换_第3页
VC数据类型转换_第4页
VC数据类型转换_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、刚接触VC编程的朋友往往对许多数据类型的转换感到迷惑不解,本文将介绍一些常用数据类型的使用。   我们先定义一些常见类型变量借以说明   int   i   =   100;   long   l   =   2001;   float   f=300.2;   double   d=12345.119;   char   username= "女侠程佩君 "   char   temp200;  

2、; char   *buf;   CString   str;   _variant_t   v1;   _bstr_t   v2;   一、其它数据类型转换为字符串   短整型(int)   itoa(i,temp,10);/将i转换为字符串放入temp中,最后一个数字表示十进制   itoa(i,temp,2);   /按二进制方式转换   长整型(long)   ltoa(l,temp,10);   二、从其它包含字符串的变量中获取指向该字

3、符串的指针   CString变量   str   =   "2008北京奥运 "   buf   =   (LPSTR)(LPCTSTR)str;   BSTR类型的_variant_t变量   v1   =   (_bstr_t) "程序员 "   buf   =   _com_util:ConvertBSTRToString(_bstr_t)v1);   三、字符串转换为其它数据类型   s

4、trcpy(temp, "123 ");   短整型(int)   i   =   atoi(temp);   长整型(long)   l   =   atol(temp);   浮点(double)   d   =   atof(temp);   四、其它数据类型转换到CString   使用CString的成员函数Format来转换,例如:   整数(int)   str.Format( "%d &qu

5、ot;,i);   浮点数(float)   str.Format( "%f ",i);   字符串指针(char   *)等已经被CString构造函数支持的数据类型可以直接赋值   str   =   username;   五、BSTR、_bstr_t与CComBSTR   CComBSTR、_bstr_t是对BSTR的封装,BSTR是指向字符串的32位指针。   char   *转换到BSTR可以这样:   BSTR   b=_com_u

6、til:ConvertStringToBSTR( "数据 ");/使用前需要加上头文件comutil.h   反之可以使用char   *p=_com_util:ConvertBSTRToString(b);   六、VARIANT   、_variant_t   与   COleVariant   VARIANT的结构可以参考头文件VC98IncludeOAIDL.H中关于结构体tagVARIANT的定义。   对于VARIANT变量的赋值:首先给vt成员赋值,指明数据类型,再对联合结构中相同

7、数据类型的变量赋值,举个例子:   VARIANT   va;   int   a=2001;   va.vt=VT_I4;/指明整型数据   va.lVal=a;   /赋值   对于不马上赋值的VARIANT,最好先用Void   VariantInit(VARIANTARG   FAR*   pvarg);进行初始化,其本质是将vt设置为VT_EMPTY,下表我们列举vt与常用数据的对应关系:   unsigned   char   bVal; &#

8、160; VT_UI1   short   iVal;   VT_I2   long   lVal;     VT_I4       float   fltVal;     VT_R4   double   dblVal;     VT_R8       VARIANT_BOOL   boolVal;     VT_BOOL   SCODE   s

9、code;     VT_ERROR   CY   cyVal;     VT_CY   DATE   date;     VT_DATE   BSTR   bstrVal;     VT_BSTR   IUnknown   FAR*   punkVal;     VT_UNKNOWN   IDispatch   FAR*   pdispVal;     V

10、T_DISPATCH   SAFEARRAY   FAR*   parray;     VT_ARRAY|*   unsigned   char   FAR*   pbVal;     VT_BYREF|VT_UI1   short   FAR*   piVal;     VT_BYREF|VT_I2   long   FAR*   plVal;     VT_BYREF|VT_I4 &

11、#160; float   FAR*   pfltVal;     VT_BYREF|VT_R4   double   FAR*   pdblVal;   VT_BYREF|VT_R8   VARIANT_BOOL   FAR*   pboolVal;   VT_BYREF|VT_BOOL   SCODE   FAR*   pscode;     VT_BYREF|VT_ERROR   CY   FAR*

12、  pcyVal;     VT_BYREF|VT_CY   DATE   FAR*   pdate;   VT_BYREF|VT_DATE   BSTR   FAR*   pbstrVal;     VT_BYREF|VT_BSTR   IUnknown   FAR*   FAR*   ppunkVal;     VT_BYREF|VT_UNKNOWN   IDispatch   FAR* &#

13、160; FAR*   ppdispVal;   VT_BYREF|VT_DISPATCH   SAFEARRAY   FAR*   FAR*   pparray;     VT_ARRAY|*   VARIANT   FAR*   pvarVal;     VT_BYREF|VT_VARIANT   void   FAR*   byref;     VT_BYREF   _variant_t是VARIAN

14、T的封装类,其赋值可以使用强制类型转换,其构造函数会自动处理这些数据类型。   例如:   long   l=222;   ing   i=100;   _variant_t   lVal(l);   lVal   =   (long)i;   COleVariant的使用与_variant_t的方法基本一样,请参考如下例子:   COleVariant   v3   =   "字符串 ",   v4  

15、=   (long)1999;   CString   str   =(BSTR)v3.pbstrVal;   long   i   =   v4.lVal;   七、其它   对消息的处理中我们经常需要将WPARAM或LPARAM等32位数据(DWORD)分解成两个16位数据(WORD),例如:   LPARAM   lParam;   WORD   loValue   =   LOWORD(lParam);/取低16位  

16、 WORD   hiValue   =   HIWORD(lParam);/取高16位   对于16位的数据(WORD)我们可以用同样的方法分解成高低两个8位数据(BYTE),例如:   WORD   wValue;   BYTE   loValue   =   LOBYTE(wValue);/取低8位   BYTE   hiValue   =   HIBYTE(wValue);/取高8位   CString、char*、string、int、_

17、bstr_t、CTime、COleDateTime等等的相互转换,如何判断一个字符串是一个浮点数? #include <string> using   namespace   std; #include   <COMDEF.H> CString   strCString= "ABC " char   strchar256,*pstr; pstr=(LPSTR)(LPCTSTR)strCString;   /CString-> char* strcpy(strchar,(LPSTR)(L

18、PCTSTR)strCString);   /CString-> char _bstr_t   strbstr=pstr;   /char*-> _bstr_t WCHAR   *strWCHAR=strbstr;   /b_str_t-> UNICODE strbstr=strWCHAR; pstr=strbstr;   /UNICODE-> char* strCString= "10 " int   istr=atoi(LPSTR)(LPCTSTR)strCString); &

19、#160; /CString、char、char*-> int strCString.Format( "%d ",istr);   /int-> CString sprintf(strchar, "%d ",istr);   /int-> char pstr=new   char256;   /字符串申请空间 strcpy(pstr, "ABC ");   /字符串赋值 delete   pstr;   /字符串释放 string   strstring= "ABC " pstr=(char*)strstring.c_str();   /string-> char* strCString= "2003-10-27   6:24:37 "   /CString-> COleDateTime COleVariant   vtime(strCString); vtime.ChangeType(VT_DATE); COleDateTime   tim

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论