Строк преобразование макросов

Макросы преобразования строк, обсуждаемые здесь действительны для 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

Родственные слова

DEVMODE и TEXTMETRIC строк преобразование макросов

Index