我在文件中保存了一长串unicode格式。 如何将文件中的数据读入CComBSTR?
由于
答案 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);