

























作者:程佩君
刚接触VC编程的朋友往往对许多数据类型的转换感到迷惑不解,本文将介绍一些常用数据类型的使用。
我们先定义一些常见类型变量借以说明
int i = 100;
long l = 2001;
float f=300.2;
double d=12345.119;
char username[]="程佩君";
char temp[200];
char *buf;
CString str;
_variant_t v1;
_bstr_t v2;
一、其它数据类型转换为字符串
char buffer[200];
char c = '1';
int i = 35;
long j = 1000;
float f = 1.7320534f;
sprintf( buffer, "%c",c);
sprintf( buffer, "%d",i);
sprintf( buffer, "%d",j);
sprintf( buffer, "%f",f);
二、字符串转换为其它数据类型
strcpy(temp,"123");
三、其它数据类型转换到CString
使用CString的成员函数Format来转换,例如:
四、BSTR、_bstr_t与CComBSTR
CComBSTR与_bstr_t对大量的操作符进行了重载,可以直接进行=,!=,==等操作,所以使用非常方便。
特别是_bstr_t,建议大家使用它。
五、VARIANT 、_variant_t 与 COleVariant
对于不马上赋值的VARIANT,最好先用Void VariantInit(VARIANTARG FAR* pvarg);进行初始化,其本质是将vt设置为VT_EMPTY,下表我们列举vt与常用数据的对应关系:
| Byte 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 bstrVal; | // VT_BSTR. |
| DECIMAL FAR* pdecVal | // VT_BYREF|VT_DECIMAL. |
| IUnknown FAR* punkVal; | // VT_UNKNOWN. |
| IDispatch FAR* pdispVal; | // VT_DISPATCH. |
| SAFEARRAY FAR* parray; | // VT_ARRAY|*. |
| Byte FAR* pbVal; | // VT_BYREF|VT_UI1. |
| short FAR* piVal; | // VT_BYREF|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. |
| IUnknown 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; | // Generic ByRef. |
| char cVal; | // VT_I1. |
| unsigned short uiVal; | // VT_UI2. |
| unsigned long ulVal; | // VT_UI4. |
| int intVal; | // VT_INT. |
| unsigned int uintVal; | // VT_UINT. |
| char FAR * pcVal; | // VT_BYREF|VT_I1. |
| unsigned short FAR * puiVal; | // VT_BYREF|VT_UI2. |
| unsigned long FAR * pulVal; | // VT_BYREF|VT_UI4. |
| int FAR * pintVal; | // VT_BYREF|VT_INT. |
| unsigned int FAR * puintVal; | //VT_BYREF|VT_UINT. |
六、其它一些COM数据类型
七、ANSI与Unicode
Unicode称为宽字符型字串,COM里使用的都是Unicode字符串。
八、其它
九、注意事项
假如需要使用到ConvertBSTRToString此类函数,需要加上头文件comutil.h,并在setting中加入comsupp.lib或者直接加上#pragma comment( lib, "comsupp.lib" )
后记:本文匆匆写成,错误之处在所难免,欢迎指正.
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。