ATL CString or_bstr_t?

В нашем COM-проекте нам нужно выбирать между лучшей реализацией строкового класса, чтобы BSTR (используемый для COM-интерфейсов) и элегантным строковым классом, таким как CString, предоставлял множество API-интерфейсов для обработки строк.

Есть ли лучший способ обрабатывать строки и строковые операции, чтобы это могли быть жалобы на BSTR, а также наивные операции CString?


person Community    schedule 21.03.2010    source источник


Ответы (2)


К счастью, здесь нет ничего по-настоящему элегантного. Лучшее, что вы можете сделать, - это использовать CString::AllocSysString(), а лучше использовать оболочку BSTR, такую ​​как CComBSTR или _bstr_t, для управления полученным временем жизни BSTR. См. этот вопрос о том, как это обычно делается.

person sharptooth    schedule 22.03.2010

CString имеет функцию AllocSysString: http://msdn.microsoft.com/en-us/library/za1865s1%28VS.80%29.aspx

Вы можете использовать его перед вызовом методов COM.

Вы можете использовать _bstr_t :: Attach для создания экземпляра _bstr_t из вызова CString :: AllocSysString, в этом случае вам не нужно заботиться о выпуске BSTR.

person Alex F    schedule 21.03.2010