【发布时间】:2011-01-29 23:53:00
【问题描述】:
在我们的 COM 项目中,我们需要在最佳字符串类实现之间进行选择,以便 BSTR(用于 COM 接口)和优雅的字符串类(如 CString)提供许多字符串操作 API。
有没有更好的方法来处理字符串和字符串操作,以便它可以成为 BSTR 投诉以及我们可以进行幼稚的 CString 操作?
【问题讨论】:
标签: string com mfc visual-c++ atl
在我们的 COM 项目中,我们需要在最佳字符串类实现之间进行选择,以便 BSTR(用于 COM 接口)和优雅的字符串类(如 CString)提供许多字符串操作 API。
有没有更好的方法来处理字符串和字符串操作,以便它可以成为 BSTR 投诉以及我们可以进行幼稚的 CString 操作?
【问题讨论】:
标签: string com mfc visual-c++ atl
不幸的是,这里没有什么真正优雅的。您可以做的最好的事情是使用CString::AllocSysString(),您最好使用像CComBSTR 或_bstr_t 这样的BSTR 包装器来管理生成的BSTR 生命周期。请参阅 this question 了解它通常是如何完成的。
【讨论】:
CString 具有 AllocSysString 功能: http://msdn.microsoft.com/en-us/library/za1865s1%28VS.80%29.aspx
您可以在调用 COM 方法之前使用它。
您可以使用 _bstr_t::Attach 从 CString::AllocSysString 调用创建 _bstr_t 实例,在这种情况下您不需要关心 BSTR 的释放。
【讨论】: