2

我想转换_variant_tCString,并使用它:

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

如果我将值传递给CString,它就可以正常工作,但是传递给CString::Format(_T("%s")),它就不起作用:

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

结果:

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

为什么?
补充:(

properties[VL_INFO]以下人员创建:

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

在哪里:

#define  CStrToVart(str) _variant_t(str)

)

4

2 回答 2

1

一种解决方法是使用 CString::SetString() 而不是 Format():

CString str2;
str2.SetString(VartToCStr(properties[VL_INFO]));
于 2013-01-17T06:46:26.247 回答
0

您可以使用间接方式将其转换为 cstring 格式

cstr= (LPCSTR)_bstr_t(variant);

这可以工作

于 2013-07-15T03:00:07.290 回答