电脑软硬件应用网
当前位置: 电脑软硬件应用网 > 设计学院 > 网络编程 > C语言 > 正文
VC常用数据类型使用转换详解
VC常用数据类型使用转换详解
2010-3-29 9:09:10  文/网络收集   出处:电脑软硬件应用网   

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

  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

_variant_t是VARIANT的封装类,其赋值可以使用强制类型转换,其构造函数会自动处理这些数据类型。

[1] [2] 下一页

  • 上一篇文章:

  • 下一篇文章:
  • 最新热点 最新推荐 相关文章
    用C语言实现的闹钟程序
    C#实现Windows关机的代码
    用动态规划法求组和数的算法
    循环结构程序具有哪3个组成部分?
    const成员函数有什么特点?
    c语言求平均分程序
    一道关于指针的C语言题
    C语言求3个整数的最大公约数
    BM模式匹配算法C语言实现
    从键盘输入任意5个4位整数存入数组a…
    关于45IT | About 45IT | 联系方式 | 版权声明 | 网站导航 |

    Copyright © 2003-2011 45IT. All Rights Reserved 浙ICP备09049068号