从文件中读取unicode字符串到CComBSTR

时间:2011-01-17 06:09:36

标签: c++ mfc

我在文件中保存了一长串unicode格式。 如何将文件中的数据读入CComBSTR?

由于

2 个答案:

答案 0 :(得分:0)

看看这个取自here的例子:

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

答案 1 :(得分:0)

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);