Макросы преобразования строк, обсуждаемые здесь действительны для ATL и MFC. Для получения дополнительных сведений о преобразовании строки MFC, см. TN059: с помощью макросов преобразования многобайтовых Кодировок и Юникода MFC и макросов MFC и глобальные переменные.
Синтаксис преобразования строки макросов:
ИМЯ_МАКРОСА ( string_address )
Например:
A2W(lpa)
В именах макросов тип источника строки находится слева (например, A) и строковый тип назначения находится справа (например, W). A означает LPSTR, OLE стенды для LPOLESTR, T обозначает LPTSTRи w означает LPWSTR.
Таким образом A2W преобразует LPSTR LPWSTR, OLE2T преобразует LPOLESTR LPTSTRи т. д.
Строка назначения создается с помощью _alloca, за исключением тех случаев, когда конечный тип BSTR. С помощью _alloca выделяет память из стека, так что когда функция возвращает значение, оно автоматически очищается.
Если в имени макроса C , макрос преобразуется в строку const . К примеру W2CA преобразует LPWSTR в LPCSTR.
Примечаниеnbsp; При использовании макроса преобразования строки ATL, укажите макрос USES_CO&NVERSION в начале вашей функции для того чтобы избежать ошибок компилятора. Например:
void func (LPSTR lpsz)
{
nbsp; USES_CO&NVERSION;
...
LPWSTR x = A2W(lpsz)
/ / Сделать что-то с x
...
}
Поведение ATL строк преобразование макросов зависит директиву компилятора в силу, если таковой имеется. Если исходный и целевой типы совпадают, преобразование не происходит. Директивы компилятора изменить следующим образом t и OLE:
| Директива компилятора в силу | T становится | OLE становится |
| нет | A | W |
| _UNICODE | W | W |
| OLE2ANSI | A | A |
| _UNICODE и OLE2ANSI | W | A |
В следующей таблице перечислены ATL строк преобразование макросов.
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
Родственные слова