2012-04-04 11 views
2

LPCTSTRが_bstr_tに割り当てられているコードがあります。 BSTRはMSDNに従って長さ情報を提供し、共通のTCHARポインタは次のコードが安全かどうかわかりません。私はこれを安全に可能にするオーバーロードされた演算子があるという手がかりは見つけられませんでしたが、これは明らかなエラーがなくても動作するようですが、未定義の動作かもしれません。_bstr_t comプロパティにLPCTSTRを代入するのは安全ですか?

例:

// pComObject->Property is of type _bstr_t 
pComObject->Property = (LPCTSTR) string; 
+0

私は 'LPCTSTR'キャストについて興味... 'string'の型は何ですか? stringが 'std :: string'や' std :: wstring'のインスタンスであれば、 'c_str()'メソッドを使うべきです。 'string'が' CString'のインスタンスである場合、暗黙の 'LPCTSTR'変換演算子があります。 –

+0

stringは 'CString'なので、正しい部分はokです。私は代入演算子を見るのを見逃した。 – Alex

答えて

2

はい、_bstr_tは(広いとマルチバイトの両方)NULLで終わる文字列を受け入れoperator=を持っているので、これは安全である

関連する問題