Domanda
Qualche idea su come ricavare un BSTR da un LPCOLESTR? Cosa sciocca su cui riattaccare ..
Soluzione
Un LPCOLESTR
è solo un const wchar_t *
, quindi puoi usare SysAllocString ()
per creare un BSTR
:
LPCOLESTR olestr = ...;
BSTR bstr = SysAllocString(olestr);
Assicurati di chiamare SysFreeString ()
quando hai finito con il tuo BSTR
. Vedi anche la documentazione MSDN su BSTR
s
Altri suggerimenti
La differenza tra BSTR e LPCOLESTR è che BSTR ha la lunghezza della stringa con prefisso prima della stringa, LPCOLESTR no.
Un BSTR non ha necessariamente un'estremità \ 0 che segna la fine della stringa, poiché la lunghezza della stringa è preceduta da prefisso, per la conversione utilizzo di solito la classe CComBSTR (atlcomcli.h), il ctor accetta BSTR o LPCOLESTR come e c'è un membro BSTR () per ottenere la rappresentazione BSTR:
CComBSTR b( yourolestring )
// b.BSTR()
CComBSTR gestirà l'allocazione / liberazione, quindi nessun rischio di perdita di memoria.