天天看點

_variant_t轉CString

1. VARIANT轉CString, 也可以将參數類型改為_variant_t。

#include "comutil.h"

#pragma comment( lib, "comsupp.lib" )

CString VariantToCString( VARIANT var )

{

    CString            strValue;

    _variant_t        var_t;

    _bstr_t            bst_t;

    time_t            cur_time;

    CTime            time_value;

    COleCurrency    var_currency;

    switch( var.vt )

    {

        case VT_NULL:    strValue = _T( "" );break;

        case VT_EMPTY:    strValue = _T( "" );break;

        case VT_UI1:    strValue.Format( _T("%d"), var.bVal );break;

        case VT_I2:        strValue.Format( _T("%d"), var.iVal );break;

        case VT_I4:        strValue.Format( _T("%d"), var.lVal );break;

        case VT_R4:        strValue.Format( _T("%f"), var.fltVal );break;

        case VT_R8:        strValue.Format( _T("%f"), var.dblVal );break;

        case VT_CY:

            var_currency = var;

            strValue = var_currency.Format(0);

            break;

        case VT_BSTR:

            var_t = var;

            bst_t = var_t;

            strValue.Format( _T("%s"),(const TCHAR*)bst_t );

            break;       

        case VT_DATE:

            cur_time = var.date;

            time_value = cur_time;

            strValue=time_value.Format( _T("%A,%B%d,%Y") );

            break;

        case VT_BOOL:

            strValue.Format( _T("%d"), var.boolVal );

            break;

        default:strValue = _T(""); break;

    }

    return strValue;

}

2. _variant_t轉int

        int cardStatus ;

        var = pRecordset->GetCollect( _T("STATE") );

        cardStatus = V_I2(&var);

3. _variant_t轉char *

        char p*;

        p = (char *)(_bstr_t)var;

4. CString 轉為_variant_t:

        CString str;

        _variant_t var;

        var = (_variant_t)(LPCTSTR)str;