ATL CString or_bstr_t? - PullRequest
       12

ATL CString or_bstr_t?

0 голосов
/ 21 марта 2010

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

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

Ответы [ 2 ]

2 голосов
/ 22 марта 2010

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

0 голосов
/ 21 марта 2010

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

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

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

...