2012-04-04 7 views
2

Ich stoße auf einen Code, bei dem ein LPCTSTR einem _bstr_t zugeordnet ist. Da ein BSTR eine Längeninformation gemäß MSDN bereitstellt und ein gewöhnlicher TCHAR-Zeiger nicht sicher ist, bin ich nicht sicher, ob der folgende Code sicher ist. Ich habe keinen Hinweis darauf gefunden, dass es einen überladenen Operator gibt, der dies sicher ermöglicht, aber dies scheint ohne offensichtliche Fehler zu funktionieren, aber es könnte ein undefiniertes Verhalten sein.Ist es sicher, eine Eigenschaft _bstr_t com eine LPCTSTR zuzuweisen?

Beispiel:

// pComObject->Property is of type _bstr_t 
pComObject->Property = (LPCTSTR) string; 
+0

Ich bin neugierig auf die 'LPCTSTR' Besetzung ... Was ist die Art von "String"? Wenn string eine Instanz von 'std :: string' oder' std :: wstring' ist, sollten Sie die Methode 'c_str()' verwenden. Wenn 'string' eine Instanz von' CString' ist, gibt es einen impliziten 'LPCTSTR'-Konvertierungsoperator. –

+0

string ist ein 'CString', also ist der rechte Teil in Ordnung. Ich habe es versäumt, die Zuweisungsoperatoren zu betrachten. – Alex

Antwort

2

Ja, hat _bstr_t eine operator=, die einen NULL-terminierten String (beide breit und multibyte) akzeptiert, so ist dies sicher

Verwandte Themen