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;