_bstr_tから派生したクラスAがあります。 wchar_t *をとり、bstrをその中にコピーするメソッドが必要です。 wcsncpy_sがbstrsを理解している場合、これを行うのが最も安全な方法ですか?正しい方法*
void CopyTo(wchar_t* buf, size_t destinationsize) const
{
wcsncpy_s(buf, destinationsize, static_cast<wchar_t const *>(this), _TRUNCATE);
}
あなたが_TRUNCATEを使用しない場合は、無効なパラメータハンドラがバッファが文字列全体を格納するのには小さすぎるときに呼び出されます(プラスヌル:
class A: public _bstr_t
{
----
----
void CopyTo(wchar_t* buf, size_t destinationsize)
{
wcsncpy_s(buf, destinationsize, *this, length());
}
};
私は鋳造部品を知って、より興味を持って0に目的地を設定します、無効なパラメーターハンドラーでOKです。なぜキャストする必要がありますか? –
@Sriram:あなたは「これは」単にあなた 'A'オブジェクトではなく、全く別のオブジェクトに格納された' wchar_t'文字列へのポインタへの参照を与える逆参照ためにキャストする必要があります。キャストは '_bstr_t'の' wchar_t * '演算子関数を呼び出し、実際の記憶域オブジェクトに格納されている' wchar_t * 'を返します。また、 '_bstr_t'が' char * 'で初期化された場合、関数は 'wchar_t'変換を実行し、ポインタを返す前に結果を格納します。あなたがやっていることは全く安全ではありません: – Jollymorphic
は、私は実際に*このデフォルトでは、実際の文字列 –