A BSTR实际上是WCHAR*一个长度前缀.该BSTR值指向字符串的开头,而不是指向长度前缀(存储在字节中,只是"在"指向的位置之前" BSTR).
换句话说,你可以把它BSTR当作a来对待const WCHAR*.无需转换.
所以,你的问题是真的:"我怎样才能转换为Unicode字符串(WCHAR*)的char*?",答案是使用::WideCharToMultiByteAPI函数作为解释在这里.或者,如果您在应用程序中使用MFC/ATL,请使用ATL和MFC转换宏.
#include "comutil.h"
BSTR bstrVal;
_bstr_t interim(bstrVal, false);    
    // or use true to get original BSTR released through wrapper
const char* strValue((const char*) bstrVal);
这处理所有宽字符到多字节的转换。
| 归档时间: | 
 | 
| 查看次数: | 19685 次 | 
| 最近记录: |