佚名通过本文主要向大家介绍了bstr,bstr t,bstr是什么类型,bstr转cstring,vt bstr等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: 关于 BSTR 的问题
描述:
解决方案1:
描述:
大家好!
我执行 BSTR p = ::SysAllocString(L"你好"); p中存储的为什么是乱码?如何解决?谢谢!
解决方案1:
bstrText确实是60 4f 7D 59,然后在bstrText之前四个字节是bstrText长度,为4。
Cstring str(bstrText)可以得到正确结果(前提是你的系统设置是中文,这样在非Unicode下面才可以正确工作)。但是后面的printf就有问题了,在Unicode下面str自动转换为PCXSTR,也就是wchar_t *,而printf接收的是char *,所以打出来的是乱码。
因为BSTR一般总是Unicode,所以用wprintf是ok的。严格来说,应该用ATL的宏OLE2T从OLECHAR转换为TCHAR,再用_tprintf是最佳做法。