Чтение строки Unicode из файла в CComBSTR - PullRequest
0 голосов
/ 17 января 2011

Я сохраняю длинную строку в формате Юникод в файле.Как я могу прочитать данные из файла в CComBSTR?

Спасибо

Ответы [ 2 ]

0 голосов
/ 17 января 2011

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);
0 голосов
/ 17 января 2011

Взгляните на этот пример, взятый из здесь :

OLECHAR* str = OLESTR("ta ta");  // wide char string of length 5
CComBSTR bstr2(wcslen(str));     // unintialized BSTR of length 5
wcscpy(bstr2.m_str, str);        // copy wide char string to BSTR
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...