2

に変換_variant_tしてCString、これを使用したい:

#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

回避策は、Format() の代わりに CString::SetString() を使用することです。

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 に答える