VC常用資料型別使用轉換詳解

2021-06-15 22:11:47 字數 4172 閱讀 9369

網上摘錄,借花獻佛:  

vc常用資料型別使用轉換詳解  

剛接觸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;  

一、其它資料型別轉換為字串  

短整型(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的封裝類,其賦值可以使用強制型別轉換,其建構函式會自動處理這些資料型別。  

例如:  

long   l=222;  

ing   i=100;  

_variant_t   lval(l);  

lval   =   (long)i;  

colevariant   v3   =   "字串",   v4   =   (long)1999;  

cstring   str   =(bstr)v3.pbstrval;  

long   i   =   v4.lval;  

七、其它  

對訊息的處理中我們經常需要將wparam或lparam等32位資料(dword)分解成兩個16位資料(word),例如:  

lparam   lparam;  

word   lovalue   =   loword(lparam);///取低16位  

word   hivalue   =   hiword(lparam);///取高16位    

對於16位的資料(word)我們可以用同樣的方法分解成高低兩個8位資料(byte),例如:  

word   wvalue;  

byte   lovalue   =   lobyte(wvalue);///取低8位  

byte   hivalue   =   hibyte(wvalue);///取高8位    

VC常用資料型別使用轉換詳解

剛接觸vc程式設計的朋友往往對許多資料型別的轉換感到迷惑不解,本文將介紹一些常用資料型別的使用。我們先定義一些常見型別變數藉以說明 int i 100 long l 2001 float f 300.2 double d 12345.119 char username 女俠程佩君 char temp...

VC常用資料型別使用轉換詳解

常用資料型別使用轉換詳解 讀者層次 初學 剛接觸vc程式設計的朋友往往對許多資料型別的轉換感到迷惑不解,本文將介紹一些常用資料型別的使用。我們先定義一些常見型別變數藉以說明 int i 100 long l 2001 float f 300.2 double d 12345.119 char use...

VC常用資料型別使用轉換詳解

vc常用資料型別使用轉換詳解 2002 7 29 12 40 48 pcvc.net 程佩君 閱讀次數 494 剛接觸vc程式設計的朋友往往對許多資料型別的轉換感到迷惑不解,本文將介紹一些常用資料型別的使用。我們先定義一些常見型別變數藉以說明 int i 100 long l 2001 float ...