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

2021-06-01 23:13:46 字數 4039 閱讀 1230

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

2002-7-29   12:40:48       pcvc.net       程佩君       閱讀次數:   494  

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