2022年常见的类型转换 .pdf
《2022年常见的类型转换 .pdf》由会员分享,可在线阅读,更多相关《2022年常见的类型转换 .pdf(14页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、常用数据类型使用转换详解先定义一些常见类型变量借以说明int i = 100; long l = 2001; float f=300.2; double d=12345.119; char username=女侠程佩君 ; char temp200; 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
2、); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 14 页 - - - - - - - - - 二、从其它包含字符串的变量中获取指向该字符串的指针CString变量str = 2008北京奥运 ; buf = (LPSTR)(LPCTSTR)str; BSTR 类型的 _variant_t变量v1 = (_bstr_t)程序员 ; buf = _com_util:ConvertBSTRToString(_bstr_t)v1); 三、字符串转换为其它数据类型strcpy
3、(temp,123); 短整型 (int) i = atoi(temp); 长整型 (long) l = atol(temp); 浮点(double) d = atof(temp); 四、其它数据类型转换到CString 使用 CString的成员函数Format来转换 ,例如 : 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 14 页 - - - - - - - - - 整数(int) str.Format(%d,i); 浮点数 (float) str.Format(
4、%f,i); 字符串指针 (char *)等已经被CString构造函数支持的数据类型可以直接赋值str = username; 五、BSTR 、_bstr_t与 CComBSTR CComBSTR 、_bstr_t是对 BSTR 的封装 ,BSTR 是指向字符串的32 位指针。char *转换到 BSTR 可以这样 : BSTR b=_com_util:ConvertStringToBSTR(数据 ); / 使用前需要加上头文件comutil.h 反之可以使用char *p=_com_util:ConvertBSTRToString(b); 六、VARIANT 、_variant_t 与 C
5、OleVariant VARIANT的结构可以参考头文件VC98IncludeOAIDL.H中关于结构体tagVARIANT的定义。对于 VARIANT变量的赋值:首先给vt 成员赋值,指明数据类型,再对联合结构中相同数据类型的变量赋值,举个例子:VARIANT va; int a=2001; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 14 页 - - - - - - - - - va.vt=VT_I4; / 指明整型数据va.lVal=a; / 赋值对于不马上赋值
6、的VARIANT ,最好先用Void VariantInit(VARIANTARG FAR* pvarg);进行初始化 ,其本质是将vt 设置为 VT_EMPTY, 下表我们列举vt 与常用数据的对应关系 : unsigned char bVal; VT_UI1 short iVal; VT_I2 long lVal; VT_I4 float fltVal; VT_R4 double dblVal; VT_R8 VARIANT_BOOL boolVal; VT_BOOL SCODE scode; VT_ERROR CY cyVal; VT_CY DATE date; VT_DATE BSTR
7、bstrVal; VT_BSTR IUnknown FAR* punkVal; VT_UNKNOWN IDispatch FAR* pdispVal; VT_DISPATCH SAFEARRAY FAR* parray; VT_ARRAY|* 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 14 页 - - - - - - - - - unsigned char FAR* pbVal; VT_BYREF|VT_UI1 short FAR* piVal; VT_BYREF|
8、VT_I2 long FAR* plVal; VT_BYREF|VT_I4 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* pcyVal; VT_BYREF|VT_CY DATE FAR* pdate; VT_BYREF|VT_DATE BSTR FAR* pbstrVal; VT_BYREF|VT_BSTR IUnknow
9、n FAR* FAR* ppunkVal; VT_BYREF|VT_UNKNOWN IDispatch FAR* 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是 VARIANT的封装类,其赋值可以使用强制类型转换,其构造函数会自动处理这些数据类型。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - -
10、- - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 14 页 - - - - - - - - - 例如:long l=222; ing i=100; _variant_t lVal(l); lVal = (long)i; COleVariant的使用与 _variant_t的方法基本一样,请参考如下例子:COleVariant v3 = 字符串 , v4 = (long)1999; CString str =(BSTR)v3.pbstrVal; long i = v4.lVal; 七、其它对消息的处理中我们经常需要将WPARAM 或 LPARAM 等 32 位
11、数据 (DWORD)分解成两个 16 位数据 (WORD),例如:LPARAM lParam; WORD loValue = LOWORD(lParam); / 取低 16 位WORD hiValue = HIWORD(lParam); / 取高 16 位对于 16 位的数据 (WORD) 我们可以用同样的方法分解成高低两个8 位数据 (BYTE),例如 : WORD wValue; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 14 页 - - - - - - - -
12、 - BYTE loValue = LOBYTE(wValue); / 取低 8 位BYTE hiValue = HIBYTE(wValue); / 取高 8 位如何将 CString类型的变量赋给char* 类型的变量1、GetBuffer函数:使用 CString:GetBuffer函数。char *p; CString str=hello; p=str.GetBuffer(str.GetLength(); str.ReleaseBuffer(); 将 CString转换成 char * 时CString str(aaaaaaa); strcpy(str.GetBuffer(10),aa)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年常见的类型转换 2022 常见 类型 转换
限制150内