Le macro di conversione stringa discusse qui sono valide per MFC e ATL. Per ulteriori informazioni sulla conversione delle stringhe MFC, vedere TN059: tramite macro conversione Unicode/MBCS MFC e macro MFC e Globals.
La sintassi delle macro conversione delle stringhe è:
NOMEMACRO ( string_address )
Ad esempio:
A2W(lpa)
I nomi delle macro, il tipo di stringa di origine è sulla sinistra (ad esempio, A) e il tipo di stringa di destinazione si trova sulla destra (per esempio, W). A l'acronimo LPSTR, OLE sta per LPOLESTR, T è l'acronimo LPTSTRe w l'acronimo LPWSTR.
Così, A2W converte un LPSTR a un LPWSTR, OLE2T converte un LPOLESTR un LPTSTRe così via.
La stringa di destinazione viene creata utilizzando _assegna, ad eccezione di quando il tipo di destinazione è BSTR. Utilizzando _assegna alloca memoria stack, così che quando la funzione termina, è automaticamente ripulito il.
Se c'è una c il nome della macro, la macro si converte in una stringa const . Ad esempio, W2CA converte un LPWSTR in un LPCSTR.
&Notanbsp; Quando si utilizza una macro di conversione stringa ATL, specificare la macro USES_CONVERSION all'inizio della vostra funzione al fine di evitare errori del compilatore. Ad esempio:
public static void func (LPSTR lpsz)
{
nbsp; USES_CO&NVERSION;
...
LPWSTR x = A2W(lpsz)
/ / Fare qualcosa con x
...
}
Il comportamento delle macro ATL stringa conversione dipende la direttiva del compilatore in effetti, se presente. Se i tipi di origine e di destinazione sono uguali, la conversione non si svolge. Le direttive del compilatore cambiano t e OLE come segue:
| Direttiva del compilatore nell'effetto | T diventa | OLE diventa |
| nessuno | A | W |
| UNICODE | W | W |
| OLE2ANSI | A | A |
| Unicode e OLE2ANSI | W | A |
La tabella seguente elenca le macro di conversione stringa ATL.
Macro per la conversione stringa 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 |
Vedi anche