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