Domanda

Qualche idea su come ricavare un BSTR da un LPCOLESTR? Cosa sciocca su cui riattaccare ..

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top