BSTR
строки используют UTF-16 для кодировки символов.Если данные файла также используют UTF-16, то просто считайте данные файла как есть в память BSTR
напрямую, например:
CComBSTR bstr(fileSize / 2);
ReadFile(..., bstr.m_str, fileSize, ...);
Однако, если файл использует другую кодировку символов,затем вызовите MultiByteToWideChar()
для вычисления необходимой длины для выделения памяти BSTR
, затем вызовите MultiByteToWideChar()
второй раз для декодирования данных файла в память BSTR
, например:
int bstrLen = MultiByteToWideChar(fileDataCodepage, 0, fileData, fileSize, NULL, 0);
CComBSTR bstr(bstrLen);
MultiByteToWideChar(fileDataCodepage, 0, fileData, fileSize, bstr.m_str, bstrLen);