VC字元類型轉換

來源:互聯網
上載者:User
 

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  
 

.

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.