程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 變體VARIANT

變體VARIANT

編輯:C++入門知識

[cpp]  目前計算機語言多種多樣,如C++、Java、Basic、Pascal等,此外還有JavaScript、VBScript、ActionScript等腳本語言,它們各自維護自己的數據類型,當使用C++這樣強類型的語言來讀取數據庫或者與其他語言之間來交換數據時,它很有可能不知道獲取到的數據的具體類型,這個時候必須借助於變體類型讀取數據。VARIANT數據類型就具有跨語言的特性,同時它可以表示(存儲)任意類型的數據。其在Visual C++中的定義: 
1.        typedef tagVARIANT VARIANT;  
2.        typedef struct tagVARIANT VARIANTARG; 
VARIANT 其實是一個結構,結構中用一個vt成員表示數據的類型,同時真正的數據則存儲在union空間中。一般我們使用VARIANT的步驟如下所示。 
定義一個VARIANT變量,如:var。 
通過vt成員設定VARIANT變量的數據類型,如:var.vt = VT_I4。 
通過對應的union成員設定數據內容,如:var.lVal = 100。 
綜上所述,利用VARIANT表示一個整型數據: 
1.        VARIANT var;  
2.        var.vt = VT_I4;     //指明整型數據    
3.        var.lVal = 100;     //賦值    
4.        利用VARIANT表示一個布爾值:  
5.        VARIANT var;  
6.        var.vt = VT_BOOL;                   //指明整型數據    
7.        var.boolVal = VARIANT_TRUE;     //賦值    
8.        利用VARIANT保存一個字符串:  
9.        VARIANT var;  
10.    var.vt = VT_BSTR;   
11.    var.bstrVal = SysAllocString(L"hello, world!"); 
根據以上的代碼,讀者可能會猜到,VARIANT的定義可能類似於如下: 
1.        struct VARIANT  
2.        {  
3.            VARTYPE vt;                     //數據類型    
4.            union 
5.            {  
6.                LONG            lVal;       //VT_I4    
7.                VARIANT_BOOL    boolVal     //VT_BOOL    
8.                BSTR            bstrVal;    //VT_BSTR    
9.            }  
10.    }; 
實際上,VARIANT的定義就是這樣的!只不過由於它需要支持的類型太多,所以它包含的聯合成員會更多。限於篇幅,在此不再附出。 
VARIANT支持的類型,也就是vt成員的取值如表所示。 

目前計算機語言多種多樣,如C++、Java、Basic、Pascal等,此外還有JavaScript、VBScript、ActionScript等腳本語言,它們各自維護自己的數據類型,當使用C++這樣強類型的語言來讀取數據庫或者與其他語言之間來交換數據時,它很有可能不知道獲取到的數據的具體類型,這個時候必須借助於變體類型讀取數據。VARIANT數據類型就具有跨語言的特性,同時它可以表示(存儲)任意類型的數據。其在Visual C++中的定義:
1.        typedef tagVARIANT VARIANT;
2.        typedef struct tagVARIANT VARIANTARG;
VARIANT 其實是一個結構,結構中用一個vt成員表示數據的類型,同時真正的數據則存儲在union空間中。一般我們使用VARIANT的步驟如下所示。
定義一個VARIANT變量,如:var。
通過vt成員設定VARIANT變量的數據類型,如:var.vt = VT_I4。
通過對應的union成員設定數據內容,如:var.lVal = 100。
綜上所述,利用VARIANT表示一個整型數據:
1.        VARIANT var;
2.        var.vt = VT_I4;     //指明整型數據 
3.        var.lVal = 100;     //賦值 
4.        利用VARIANT表示一個布爾值:
5.        VARIANT var;
6.        var.vt = VT_BOOL;                   //指明整型數據 
7.        var.boolVal = VARIANT_TRUE;     //賦值 
8.        利用VARIANT保存一個字符串:
9.        VARIANT var;
10.    var.vt = VT_BSTR; 
11.    var.bstrVal = SysAllocString(L"hello, world!");
根據以上的代碼,讀者可能會猜到,VARIANT的定義可能類似於如下:
1.        struct VARIANT
2.        {
3.            VARTYPE vt;                     //數據類型 
4.            union
5.            {
6.                LONG            lVal;       //VT_I4 
7.                VARIANT_BOOL    boolVal     //VT_BOOL 
8.                BSTR            bstrVal;    //VT_BSTR 
9.            }
10.    };
實際上,VARIANT的定義就是這樣的!只不過由於它需要支持的類型太多,所以它包含的聯合成員會更多。限於篇幅,在此不再附出。
VARIANT支持的類型,也就是vt成員的取值如表所示。
[cpp]  

 

\

\

\

 

 

 

 

 

 

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved