ATL中常見資料型別及其相互轉換

2021-04-02 19:21:46 字數 4513 閱讀 2313

atl中常見資料型別及其相互轉換

1bstr型別:

bstr型別的定義如下:

typedef  olechar *  bstr

在32位windows平台下為寬字元(single-byte strings),乙個 bstr 由頭部和字串組成,頭部包含了字串的長度資訊,字串中可以包含嵌入的 null 值。其常見的操作函式如下:

(1)比較兩個字串:

int bstrcmp(const bstrbstr1, const bstr bstr2);

int bstrncmp(const bstrbstr1, const bstr bstr2, int cchars);

int bstrcmpi(const bstrbstr1, const bstr bstr2);

int bstrncmpi(const bstrbstr1, const bstr bstr2, int cchars);

(2)獲得字串的長度:

int bstrlen(const bstrbstr);

(3)字串的拷貝:

bstr bstrcpy(bstr& bstrdst, const bstr bstrsrc);

bstr bstrncpy(bstr& bstrdst, const bstr bstrsrc, int cchars);

(4)字串空間的分配:

bstr bstralloc(const bstrbstr);

bstr bstralloc(const char*sz);

bstr bstralloc(const wchar*wsz);

注意:用bstralloc分配的記憶體空間,需要用sysfreestring來釋放。

2hrsult型別:

hresult型別的定義如下:

typedef long        hresult;

該型別為乙個32位的值,其主要用來描述錯誤和警告資訊。

其組成的區域如下:

第1位:標誌返回值是否成功;0代表成功,1代表失敗。

第2 - 5位:為保留字段。

第6 - 16位:指示錯誤和警告訊息。

第17 - 32位:描述錯誤和警告資訊。

因此,我們在判斷函式的呼叫(返回值為hresult型別)是否成功時,只需要得知它的第一位是否為0;作為乙個long型別來講,即只需判斷該值是否大於0。

為了使用的方便,在winerror.h中,定義了兩個診斷巨集succeededfailed用來診斷hresult值,其定義如下:

#define succeeded(status)  ((hresult)(status) >= 0)

#define failed(status)  ((hresult)(status)<0)

3、常見型別之間的轉換:

(1)整型資料型別轉換為字元型 :

短整型(int) :

int i = 100; 

char temp[200]; 

itoa(i,temp,10);///將i轉換為字串放入temp中,最後乙個數字表示轉換方式 

itoa(i,temp,2); ///按二進位制方式轉換 

長整型(long) 

long l = 2001; 

char temp[200];

ltoa(l,temp,10); 

(2)字元型轉換為整型 

char temp[200] = "123";

短整型(int) 

i = atoi(temp); 

長整型(long) 

l = atol(temp); 

浮點(double) 

d = atof(temp);

(3)bstr型別轉換為lptstr

lptstr pstr = null;

bstr bstrfilename = sysallocstring;(「poty」);

_bstr_t _bstrfilename bstrfilename, false);

pstr = (char * )_bstrfilename;

4、常見字串操作函式:

(1)追加乙個新的字串:

char*strcat(char*strdestination,constchar*strsource);

(2)在字串中查詢乙個字元:

char*strchr(constchar*string,intc); //返回字串中第乙個出現的c

char*strrchr(constchar*string,intc); //返回字串中最後乙個出現的c

(3)在字串中查詢乙個字串:

char*strstr(constchar*string,constchar*strcharset);

size_tstrspn(constchar*string,constchar*strcharset);

(4)字串拷貝:

char*strcpy(char*strdestination,constchar*strsource);

python 常見資料型別及其方法

表示空 無任何功能,專門用於提供空值 只有兩個結果 true false 0 set 轉布林時為false,其餘結果都為ture 特有方法 公共方法 獨有方法 v 1,2,3,4,5 print v 1,2,3,4,5,6 insert 在列表指定索引值前面加入元素 v 1,2,3,4 v.inse...

Redis中常見資料型別操作命令

keys 檢視所有存在的key exists key的名字 判斷某個key是不是存在 move key db 當前庫沒有了,被移除了 expire key 為指定的key設定過期時間 ttl key 檢視還有多少秒過期 1表示用不過期 2表示已經過期 type key 檢視你的key是什麼型別 in...

常見資料型別轉換

在最近兩個小專案中大量的使用了資料型別之間的互相轉換,因此寫一篇記述下來以便日後查閱。target 目標資料型別 需求資料型別 source 源資料型別 需轉換資料型別 string轉qstring target qstring fromstdstring source unsigned char ...