Macro per la conversione stringa

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

Macro ATL e funzioni globali

Vedi anche

TEXTMETRIC String macro per la conversione e DEVMODE

Index