我有这样的代码,使用USE_CONVERSION宏在C++项目...做不USES_CONVERSION宏观
如果写得好,(不是我写的),我想知道是否有任何更好的方法这样做,没有USES_CONVERSION和W2A宏。
STDMETHODIMP CInterpreter::GetStringVar(BSTR bstrNamespace, BSTR bstrVar, BSTR *pbstrValue)
{
USES_CONVERSION;
try
{
if (!pbstrValue) return E_POINTER;
char* pszNamespace= W2A(_bstr_t(bstrNamespace).operator wchar_t*());
char* pszVar= W2A(_bstr_t(bstrVar).operator wchar_t*()); // Is this not better done another way????
char pszErrStr[kPYTHONERRBUFSIZE];
char pszStrValue[kPYTHONSTRVALUESIZE];
BOOL bResult= Python_GetStringVar(pszNamespace, pszVar, pszErrStr, pszStrValue, kPYTHONSTRVALUESIZE);
*pbstrValue= _bstr_t(pszStrValue).operator BSTR();
if (!bResult)
throw x::internal_error(A2W(pszErrStr));
return S_OK;
}
}
由于也有一个BSTR,它看起来像微软的MFC/ATL的东西。请相应标记。 – MSalters 2010-06-22 07:50:39
BSTR是一个Win32(平台SDK)类型。 _bstr_t也是Platform SDK的一部分(它被#import使用)。 – reece 2012-11-27 00:38:49