本文**自別人部落格,將介紹一些常用資料型別的使用。
我們先定義一些常見型別變數藉以說明
一、其它資料型別轉換為字串
短整型(int)
長整型(long)
浮點數(float,double)
用fcvt可以完成轉換,這是msdn中的例子:
執行結果:source: 3.1415926535 buffer: '31415927' decimal: 1 sign: 0
decimal表示小數點的位置,sign表示符號:0為正數,1為負數
cstring變數
bstr變數
ccombstr變數
_bstr_t變數
_bstr_t型別是對bstr的封裝,因為已經過載了=操作符,所以很容易使用
通用方法(針對非com資料型別)
用sprintf完成轉換
二、字串轉換為其它資料型別
短整型(int)
長整型(long)
浮點(double)
cstring變數
bstr變數
ccombstr變數
ccombstr型別變數可以直接賦值
_bstr_t變數
_bstr_t型別的變數可以直接賦值
三、其它資料型別轉換到cstring
使用cstring的成員函式format來轉換,例如:
整數(int)
浮點數(float)
字串指標(char *)等已經被cstring建構函式支援的資料型別可以直接賦值
對於format所不支援的資料型別,可以通過上面所說的關於其它資料型別轉化到char *的方法先轉到char *,然後賦值給cstring變數。
四、bstr、_bstr_t與ccombstr
ccombstr 是atl對bstr的封裝,_bstr_t是c++對bstr的封裝,bstr是32位指標,但並不直接指向字串的緩衝區。
char *轉換到bstr可以這樣:
反之可以使用
具體可以參考一,二段落裡的具體說明。
ccombstr與_bstr_t對大量的操作符進行了過載,可以直接進行=,!=,==等操作,所以使用非常方便。
特別是_bstr_t,建議大家使用它。
五、variant 、_variant_t 與 colevariant
variant的結構可以參考標頭檔案vc98/include/oaidl.h中關於結構體tagvariant的定義。
對於variant變數的賦值:首先給vt成員賦值,指明資料型別,再對聯合結構中相同資料型別的變數賦值,舉個例子:
對於不馬上賦值的variant,最好先用void variantinit(variantarg far* pvarg);進行初始化,其本質是將vt設定為vt_empty,下表我們列舉vt與常用資料的對應關係:
_variant_t是variant的封裝類,其賦值可以使用強制型別轉換,其建構函式會自動處理這些資料型別。
使用時需加上#include
例如:colevariant的使用與_variant_t的方法基本一樣,請參考如下例子:
六、其它一些com資料型別
根據progid得到clsid
根據clsid得到progid
...///可以使用pprogid
cotaskmemfree(pprogid);//不要忘記釋放
七、ansi與unicode
unicode稱為寬字元型字串,com裡使用的都是unicode字串。
將ansi轉換到unicode
(1)通過l這個巨集來實現,例如: clsidfromprogid( l"mapi.folder",&clsid);
(2)通過multibytetowidechar函式實現轉換,例如:
(3)通過a2w巨集來實現,例如:
將unicode轉換到ansi
(1)使用widechartomultibyte,例如:
(2)使用w2a巨集來實現,例如:
八、其它
對訊息的處理中我們經常需要將wparam或lparam等32位資料(dword)分解成兩個16位資料(word),例如:
對於16位的資料(word)我們可以用同樣的方法分解成高低兩個8位資料(byte),例如:
兩個16位資料(word)合成32位資料(dword,lresult,lparam,或wparam)
兩個8位的資料(byte)合成16位的資料(word)
從r(red),g(green),b(blue)三色得到colorref型別的顏色值
例如colorref bkcolor = rgb(0x22,0x98,0x34);
從colorref型別的顏色值得到rgb三個顏色值
九、注意事項
假如需要使用到convertbstrtostring此類函式,需要加上標頭檔案comutil.h,並在setting中加入comsupp.lib或者直接加上#pragma comment( lib, "comsupp.lib" )
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...
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...