Sie können dies auch versuchen:
%Vor% _bstr_t
implementiert folgende Konvertierungsoperatoren, was ich ziemlich praktisch finde:
BEARBEITEN: Klärung bezüglich der Antwortkommentare: Die Zeile const char* c = b;
führt zu einer schmalen Zeichenkopie der Zeichenkette, die von der Instanz _bstr_t
erstellt und verwaltet wird, die sie einmal freigibt, wenn sie zerstört wird. Der Operator gibt nur einen Zeiger auf diese Kopie zurück. Daher muss diese Zeichenfolge nicht kopiert werden. Außerdem gibt CString::GetBuffer
in der Frage LPTSTR
(d. H.% Co_de%) und nicht TCHAR*
(d. H.% Co_de%) zurück.
Eine weitere Option ist die Verwendung von Konvertierungs-Makros:
%Vor%Das Problem bei diesem Ansatz besteht darin, dass der Speicher für die konvertierte Zeichenfolge im Stack zugewiesen wird, sodass die Länge der Zeichenfolge begrenzt ist. Mit dieser Familie von Konvertierungsmakros können Sie jedoch die Codepage auswählen, die für die Konvertierung verwendet werden soll. Diese wird häufig benötigt, wenn eine breite Zeichenfolge Nicht-ANSI-Zeichen enthält.
Mein Code für Linux
%Vor%Wie erstellt man
? %Vor%Ausgabe
%Vor% Es ist ziemlich einfach, denn CString
ist nur ein Typdef für CStringT
, und Sie haben auch Zugriff auf CStringA
und CStringW
(Sie sollten die Dokumentation über die Unterschiede lesen).
Sie könnten dies tun, oder Sie könnten etwas sauberer machen:
%Vor%Tags und Links c++