Шаг 105 - Макросы ATL W2A и A2W

Эти макросы созданы для удобной конвертации BSTR - ANSI и ANSI - BSTR. Мы уже рассматривали механизмы подобной конвертации в шаге "Шаг 57 - OLECHAR в CHAR и обратно". Но использование этих макросов довольно удобно и намного проще. Смотрим пример:

#include "stdafx.h"
#include "atlbase.h"
#include "iostream.h"

void main()
{
	CComBSTR bstrTemp;
	char buffer[5];
	strcpy(buffer,"Hello");
	USES_CONVERSION;
	bstrTemp=A2W(buffer);
	strcpy(W2A(bstrTemp),buffer);	
	cout << buffer << endl;
}

В основе этих макросов две функции API:

MultiByteToWideChar()
WideCharToMultiByte()

Эти две функции имеют просто огромное количество параметров, а данный макрос скрывает эти параметры от нас, вот и вся идея. Ну, например, первый параметр - это тип кодировки, нам бы пришлось ставить параметр, что это ANSI, а не MAC (Макинтош). Вообще пользуйтесь и не забывайте USES_CONVERSION, который тоже макрос и определяет ряд параметров для корректного преобразования, используемые потом в указанных макросах.


Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Каев Артем - 28.08.2001