2013-01-15 1 views
2

Je veux convertir _variant_t-CString, et utiliser ceci:différence se produit lorsque converti _variant_t à CString ou affiché dans (« % s ») en utilisant _variant_t.bstrVal

#define VartToCStr(vart) (_variant_t(vart)).bstrVal 

Si je passe la valeur à CString, il fonctionne bien, mais à CString::Format(_T("%s")), il ne fonctionne pas:

CString str = VartToCStr(properties[VL_INFO]); 
CString str2; 
str2.Format(_T("%s,"), VartToCStr(properties[VL_INFO])); 

Résultat:

str: "ES1-SW1-SW3-..." 
str2: "E" 

Pourquoi?
Ajouté:
(
properties[VL_INFO] est créé par:

CString str = _T("ES1-SW1-SW3-..."); 
properties[VL_INFO] = CStrToVart(str); 

où:

#define CStrToVart(str) _variant_t(str) 

)

Répondre

1

Une solution consiste à utiliser CString :: SetString() au lieu de Format ():

CString str2; 
str2.SetString(VartToCStr(properties[VL_INFO])); 
0

Vous pouvez utiliser une manière indirecte pour le convertir au format cstring

cstr= (LPCSTR)_bstr_t(variant); 

cela peut fonctionner

Questions connexes