Wie konvertiert _bstr_t zu CString
Ich habe eine _bstr_t
variable bstrErr
und ich bin eine CString
variable csError
. Wie setze ich den Wert, welcher in bstrErr
zu csError
?
InformationsquelleAutor subbu | 2009-11-06
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ist es nicht nur möglich zu wirken:
Ich denke, das sollte funktionieren, wenn das Projekt Unicode ist.
InformationsquelleAutor Andrew
CString hat contructors und Zuweisungsoperatoren für beide LPCSTR und LPCWSTR, so gibt es nie eine Notwendigkeit zu nennen WideCharToMultiByte, und Sie nicht bekommen kann die casting falsch in unicode oder nicht-unicode-Modus.
Können Sie geben Sie einfach die Zeichenfolge auf diese Weise:
csError = bstrErr.GetBSTR();
Oder verwenden Sie den Konstruktor
CString csError( bstrErr.GetBSTR() );
Ich bin mit GetBSTR. Es ist die gleiche Sache wie Gießen bstrErr mit (LPCWSTR), aber ich bevorzuge es für die Lesbarkeit.
InformationsquelleAutor fredr
Wenn Sie kompilieren für Unicode - nur weisen die eingekapselten BSTR an die CString. Wenn Sie kompilieren für ANSI-Sie müssen WideCharToMultiByte() für die Konvertierung.
Hüten Sie sich auch davor, dass die eingekapselten BSTR kann null sein, das entspricht einer leeren Zeichenkette. Wenn Sie nicht aufpassen dies Ihr Programm in undefiniertem Verhalten.
InformationsquelleAutor sharptooth
InformationsquelleAutor user3707738