c++ - C++ 如何将_bstr_t转换为 CString

  显示原文与译文双语对照的内容

我有 _bstr_t 变量 bstrErr,我有一个 CString 变量 csError 。 如何将 bstrErr 中的值设置为 csError

时间:

是不可能的?


_bstr_t b("Steve");


CString cs;


cs = (LPCTSTR) b;



我认为当项目是Unicode时,这应该。

CString既有针对和LPCWSTR也有赋值操作符,所以不需要调用 WideCharToMultiByte,也不能在unicode或者非unicode模式中得到错误的转换。

你可以通过以下方式指定字符串:

csError = bstrErr.GetBSTR() ;

或者使用构造器的硬 csError ( bstrErr.GetBSTR() ) ;

我使用 GetBSTR 。它与使用( LPCWSTR ) casting bstrErr相同,但我更喜欢它的可读性。

如果你为Unicode编译,只需将封装的BSTR分配给。 如果为ANSI编译,则必须使用 WideCharToMultiByte() 进行转换。

还要注意,封装的BSTR可以是空的,它对应于空字符串。 如果你不关心这个问题,你的程序会遇到未定义的行为。

...