Разница возникает при преобразовании _variant_t в CString или отображении в (& quot;% s & quot;) с использованием _variant_t.bstrVal

Я хочу конвертировать _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)

)

2

Решение

Обходной путь должен использовать CString :: SetString () вместо Format ():

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

Другие решения

Вы можете использовать косвенный способ конвертировать его в формат cstring

cstr= (LPCSTR)_bstr_t(variant);

это может сработать

0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector