将BSTR转换为const char*

sub*_*ubs 8 c++

可能重复:
哪个是在C/C++中将BSTR参数转换为ANSI的更好代码?
如何将char*转换为BSTR?

大家好,我是C++的新手,任何人都知道如何将BSTR转换为const char*?

Nat*_*ate 7

A BSTR实际上是WCHAR*一个长度前缀.该BSTR值指向字符串的开头,而不是指向长度前缀(存储在字节中,只是"在"指向的位置之前" BSTR).

换句话说,你可以把它BSTR当作a来对待const WCHAR*.无需转换.

所以,你的问题是真的:"我怎样才能转换为Unicode字符串(WCHAR*)的char*?",答案是使用::WideCharToMultiByteAPI函数作为解释在这里.或者,如果您在应用程序中使用MFC/ATL,请使用ATL和MFC转换宏.


Ste*_*end 5

#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);
Run Code Online (Sandbox Code Playgroud)

处理所有宽字符到多字节的转换。