Las macros de conversión de la cadena discutidas aquí son válidas para ATL y MFC. Para obtener más información sobre conversión de cadenas MFC, vea TN059: mediante Macros de conversión de MFC MBCS/Unicode y las Macros MFC y Globals.
La sintaxis de las macros de conversión de cadenas:
MACRONAME ( string_address )
Por ejemplo:
A2W(lpa)
En los nombres de macro, el tipo de cadena de origen es de la izquierda (por ejemplo, A) y el tipo de cadena de destino está a la derecha (por ejemplo, W). A significa LPSTR, OLE stands para LPOLESTR, LPTSTR T representa y significa W LPWSTR.
Así, A2W convierte un LPSTR en un LPWSTR, OLE2T convierte un LPOLESTR a un LPTSTRetc.
La cadena de destino se crea utilizando _alloca, excepto cuando el tipo de destino es BSTR. Utilizando _alloca asigna memoria de la pila, así que cuando su función devuelve, automáticamente se limpia.
Si hay una c en el nombre de la macro, la macro se convierte en una cadena const . Por ejemplo, W2CA convierte un LPWSTR a un LPCSTR.
&Notanbsp; Al utilizar una macro de conversión de cadena ATL, especificar la macro USES_CONVERSION al comienzo de su función a fin de evitar errores del compilador. Por ejemplo:
void func (LPSTR lpsz)
{
nbsp; USES_CO&NVERSION;
...
LPWSTR x = A2W(lpsz)
/ / Hacer algo con x
...
}
El comportamiento de las macros de conversión de ATL cadena depende de la Directiva del compilador en efecto, si alguna. Si los tipos de origen y de destino son los mismos, conversión no tiene lugar. Directivas de compilador cambiar t y OLE como sigue:
| Directiva del compilador en efecto | Convierte en t | OLE se convierte en |
| ninguno | A | W |
| _UNICODE | W | W |
| OLE2ANSI | A | A |
| _UNICODE y OLE2ANSI | W | A |
La tabla siguiente muestran las macros de conversión de cadena ATL.
Macros de conversión de cadena ATL
| 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 Macros y funciones globales
Véase también