wie man const WCHAR * in const char * umwandelt

7
%Vor%     
jack 28.09.2012, 09:58
quelle

5 Antworten

12

Sie können dies auch versuchen:

%Vor%

_bstr_t implementiert folgende Konvertierungsoperatoren, was ich ziemlich praktisch finde:

%Vor%

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.

    
Zdeslav Vojkovic 28.09.2012, 10:10
quelle
5

Sie können sprintf für diesen Zweck verwenden:

%Vor%     
l0pan 04.04.2014 11:49
quelle
2

Mein Code für Linux

%Vor%

Wie erstellt man

? %Vor%

Ausgabe

%Vor%     
Alexander Lubyagin 05.06.2017 18:48
quelle
1

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).

%Vor%     
Mark Ingram 28.09.2012 10:13
quelle
1

Sie könnten dies tun, oder Sie könnten etwas sauberer machen:

%Vor%     
Luchian Grigore 28.09.2012 10:00
quelle

Tags und Links