Die Zeichenfolge-Konvertierung Makros hier besprochenen gelten für ATL und MFC. Weitere Informationen über MFC-Zeichenfolgenkonvertierung, finden Sie unter TN059: Using MFC MBCS/Unicode-Konvertierung Makros und MFC-Makros und Globals.
Die Syntax der Zeichenfolge-Konvertierung Makros ist:
MAKRONAME ( String_address )
Zum Beispiel:
A2W(lpa)
In der Makronamen der Quelle String-Typ ist auf der linken Seite (z. B. A) und der Ziel-String-Typ ist auf der rechten Seite (z. B. W). A steht für LPSTR, OLE steht für LPOLESTR, T steht für LPTSTRund w steht für LPWSTR.
So A2W konvertiert ein LPSTR in ein LPWSTR, OLE2T konvertiert eine LPOLESTR in eine LPTSTRusw.
Der Zielzeichenfolge ist mit _Alloca, außer wenn der Zieltyp BSTRist erstellt. Mit _Alloca reserviert Speicher aus dem Stapel, so dass wenn die Funktion zurückgibt, es ist automatisch bereinigt.
Wenn ein C in der Makroname vorhanden ist, konvertiert das Makro in einer const String. W2CA konvertiert beispielsweise ein LPWSTR in ein LPCSTR.
Hinweis&Nbsp; Wenn Sie einen ATL-Zeichenfolge Konvertierung Makro verwenden, geben Sie das USES_CONVERSION -Makro am Anfang der Funktion an, um die um Compilerfehler zu vermeiden. Zum Beispiel:
void Func (LPSTR Lpsz)
{
&Nbsp; DAS USES_CONVERSION;
...
LPWSTR X = A2W(lpsz)
/ / TU etwas mit x
...
}
Das Verhalten der ATL Zeichenfolge-Konvertierung Makros hängt die Compiler-Direktive in Kraft, falls vorhanden. Wenn die Quell- und Ziel-Typen identisch sind, findet keine Konvertierung statt. Compiler-Direktiven ändern wie folgt, T und OLE:
| Compiler-Direktive in Kraft | T wird | OLE wird |
| keine | A | W |
| _UNICODE | W | W |
| OLE2ANSI | A | A |
| _UNICODE und OLE2ANSI | W | A |
Die folgende Tabelle listet die ATL Zeichenfolge-Konvertierung Makros.
ATL-String-Konvertierung Makros
| A2BSTR | OLE2A | T2A | W2A |
| A2COLE | OLE2BSTR | T2BSTR | W2BSTR |
| A2CT | OLE2CA | T2CA | W2CA |
| A2CW | OLE2CT | T2COLE | W2COLE |
| A2OLE | OLE2CW | T2CW | W2CT |
| A2T | OLE2T | T2OLE | W2OLE |
| A2W | OLE2W | T2W | W2T |
ATL-Makros und globale Funktionen
Siehe auch