VC字符类型转换

 

1、cstring   to   char*  
  经过类型强制转换,可以将cstring类型转换成char*,例如:  
  cstring   cstr   =   "hello,world!";  
  char*   zstr   =   (char*)(lpctstr)cstr;  
   
  2、char*   to   cstring  
  char*类型可以直接给cstring,完成自动转换,例如:  
  char*   zstr   =   "hello,world!";  
  cstring   cstr   =   zstr;  
   
  3、cstring   to   lpcstr  
  将cstring转换成lpcstr,需要获得cstring的长度,例如:  
  cstring   cstr   =   _t("hello,world!");  
  int   nlen   =   cstr.getlength();  
  lpcstr   lpszbuf   =   cstr.getbuffer(nlen);  
   
  4、cstring   to   lpstr  
  这个和第3个技巧是一样的,例如:  
  cstring   cstr   =   _t("hello,world!");  
  int   nlen   =   str.getlength();  
  lpstr   lpszbuf   =   str.getbuffer(nlen);  
   
 

网友:bhut


  刚接触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;    
  一、其它数据类型转换为字符串    
  短整型    
  itoa;///将i转换    
  为字符串放入temp中,最后一个数字表示十进制    
  itoa;   ///按二进制方式转换    
  长整型    
  ltoa;    
  二、从其它包含字符串的变量中获取指向该字符串的指针    
  cstring变量    
  str   =   "2008北京奥运";    
  buf   =   str;    
  bstr类型的_variant_t变量    
  v1   =   "程序员";    
  buf   =   _com_util::convertbstrtostringv1);    
  三、字符串转换为其它数据类型    
  strcpy;    
  短整型    
  i   =   atoi;    
  长整型    
  l   =   atol;    
  浮点    
  d   =   atof;    
  四、其它数据类型转换到cstring    
  使用cstring的成员函数format来转换,例如:    
  整数    
  str.format;    
  浮点数    
  str.format;    
  字符串指针等已经被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;    
  六、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;    
  进行初始化,其本质是将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的封装类,    
  其赋值可以使用强制类型转换,    
  其构造函数会自动处理这些数据类型。    
  例如:    
  long   l=222;    
  ing   i=100;    
  _variant_t   lval;    
  lval   =   i;    
  colevariant的使用与_variant_t的方法基本一样,请参考如下例子:    
  colevariant   v3   =   "字符串",   v4   =   1999;    
  cstring   str   =v3.pbstrval;    
  long   i   =   v4.lval;    
   
  七、其它    
  对消息的处理中我们经常需要将wparam或lparam等32位数据    
  分解成两个16位数据,例如:    
  lparam   lparam;    
  word   lovalue   =   loword;///取低16位    
  word   hivalue   =   hiword;///取高16位    
  对于16位的数据我们可以用同样的方法分    
  解成高低两个8位数据,例如:    
  word   wvalue;    
  byte   lovalue   =   lobyte;///取低8位    
  byte   hivalue   =   hibyte;///取高8位    
       
       
  --    
       
 

网友:liangshixing

、cstring   to   char*  
  经过类型强制转换,可以将cstring类型转换成char*,例如:  
    cstring   str;  
  str.getstring();

网友:bluebohe

bstr   与   cstring    
  bstr   str;//str已经赋过值  
  cstring   str1=str;  
  bstr   str2=str1.allocsysstring();

网友:888atao

cstring::allocsysstring()  
  用于将ansi转换成unicode  
   
  bstr   wstr;  
  cstring   ansistr;  
  ansistr   =   wstr;   //一定要这样写  
  将unicode转换成ansi  
 

.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值