变体VARIANT

来源:互联网 发布:java正则表达式 编辑:程序博客网 时间:2024/05/04 18:12

欢迎加入我们的QQ群,无论你是否工作,学生,只要有c / vc / c++ 编程经验,就来吧!158427611 
目前计算机语言多种多样,如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.            union5.            { 6.                LONG            lVal;       //VT_I4  7.                VARIANT_BOOL    boolVal     //VT_BOOL  8.                BSTR            bstrVal;    //VT_BSTR  9.            } 10.    };实际上,VARIANT的定义就是这样的!只不过由于它需要支持的类型太多,所以它包含的联合成员会更多。限于篇幅,在此不再附出。VARIANT支持的类型,也就是vt成员的取值如表所示。

	
				
		
原创粉丝点击