Makra konwersji ciągów, omówione powyżej są ważne dla ATL i MFC. Aby uzyskać więcej informacji na temat konwersji ciągu MFC, zobacz TN059: przy użyciu MFC MBCS/Unicode konwersja makra i makra MFC i Globals.
Składnia makra Konwersja ciągu jest:
Parametr NAZWA_MAKRA ( string_address )
Na przykład:
A2W(lpa)
Nazwy makr typu ciąg źródłowy jest po lewej stronie (na przykład A) i typu Ciąg docelowego jest po prawej stronie (na przykład W.). A skrótem LPSTR, OLE podpórek LPOLESTR, T podpórek LPTSTRi w podpórek LPWSTR.
W związku z tym A2W konwertuje LPSTR , LPWSTR, OLE2T konwertuje LPOLESTR LPTSTR, i tak dalej.
Ciąg docelowego jest tworzony przy użyciu _alloca, z wyjątkiem sytuacji, kiedy typ docelowy BSTR. Za pomocą _alloca przydzielanie pamięci stosu, tak, że gdy zwraca wartość funkcji, jest automatycznie czyszczona.
Jeśli istnieje c w nazwie makra, makro konwertuje ciąg Stała . Na przykład W2CA konwertuje LPWSTR LPCSTR.
Uwaganbsp; Użycie makra konwersji ciągu ATL, określić makro USES_CO&NVERSION na początku funkcji w celu uniknięcia błędy kompilatora. Na przykład:
unieważnij PF (LPSTR lpsz)
{
nbsp; USES_CO&NVERSION;
...
LPWSTR x = A2W(lpsz)
/ / Coś z x
...
}
Zachowanie makra konwersji ciągu ATL zależy od dyrektywy kompilatora w efekcie, ewentualne. Jeśli typy źródłowy i docelowy są takie same, bez konwersji ma miejsce. Dyrektyw kompilatora Zmień T i OLE w następujący sposób:
| Kompilator dyrektywy w życie | Staje się t | OLE staje się |
| brak | A | W |
| _UNICODE | W | W |
| OLE2ANSI | A | A |
| _UNICODE i OLE2ANSI | W | A |
W poniższej tabeli wymieniono makra konwersji ciągu ATL.
ATL ciąg konwersja makra
| 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 | MODUŁ T2W | W2T |
Zobacz też