下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 工程决算合同范例
- plc调试合同范例
- 个人租赁钢管合同范例
- 关于股合同范例
- 购买游戏设备合同范例
- 酒水采购类合同范例
- 公司与个人合同范例
- 常用购销标准合同范例
- 青海警官职业学院《信息分析与预测》2023-2024学年第一学期期末试卷
- 青海交通职业技术学院《素描(6)A》2023-2024学年第一学期期末试卷
- 2022年会计专业申请留学申请书
- 义务(应急)消防队成员花名册
- 小学一年级上册数学20以内进位加法单元测试卷1
- 中央空调维保工作实施方案
- (高清版)外墙外保温工程技术标准JGJ144-2019
- 未成年人需办银行卡证明(模板)
- 惯性导航系统误差传播特性分析报告
- 信息化弱电项目试运行方案报告
- 算法导论第三十四章答案
- 不自主运动量表(AIMS)(共3页)
- 二战(英语)PPT
评论
0/150
提交评论