Chinaunix首页 | 论坛 | 博客
  • 博客访问: 162680
  • 博文数量: 64
  • 博客积分: 3366
  • 博客等级: 中校
  • 技术积分: 765
  • 用 户 组: 普通用户
  • 注册时间: 2010-04-10 10:32
文章分类

全部博文(64)

文章存档

2012年(5)

2011年(22)

2010年(37)

我的朋友

分类: C/C++

2011-04-02 16:58:51

先定义一些常见类型变量借以说明

  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;

  一、其它数据类型转换为字符串

  短整型(int)

  itoa(i,temp,10);     //将i转换为字符串放入temp中,最后一个数字表示十进制

  itoa(i,temp,2);      //按二进制方式转换

  长整型(long)

  ltoa(l,temp,10);

  二、从其它包含字符串的变量中获取指向该字符串的指针

  CString变量

  str = "2008北京奥运";

  buf = (LPSTR)(LPCTSTR)str;

  BSTR类型的_variant_t变量

  v1 = (_bstr_t)"程序员";

  buf = _com_util::ConvertBSTRToString((_bstr_t)v1);

  三、字符串转换为其它数据类型

  strcpy(temp,"123");

  短整型(int)

  i = atoi(temp);

  长整型(long)

  l = atol(temp);

  浮点(double)

  d = atof(temp);

  四、其它数据类型转换到CString

  使用CString的成员函数Format来转换,例如:

  整数(int)

  str.Format("%d",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_util::ConvertStringToBSTR("数据");     //使用前需要加上头文件comutil.h

  反之可以使用char *p=_com_util::ConvertBSTRToString(b);

  六、VARIANT 、_variant_t 与 COleVariant

  VARIANT的结构可以参考头文件VC98\Include\OAIDL.H中关于结构体tagVARIANT的定义。

  对于VARIANT变量的赋值:首先给vt成员赋值,指明数据类型,再对联合结构中相同数据类型的变量赋值,举个例子:

  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; 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

  IUnknown FAR* punkVal;  VT_UNKNOWN

  IDispatch FAR* pdispVal;  VT_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

  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;  VT_BYREF

 


本文转自 ☆★ 包罗万象 ★☆ - 转载请注明出处,侵权必究!
原文链接:

阅读(772) | 评论(0) | 转发(0) |
0

上一篇:win32 downloader(C++)

下一篇:php301重定向代码

给主人留下些什么吧!~~