私には_bstr_t
変数がbstrErr
あり、変数がありCString
ますcsError
。に入る値を設定するにはどうすればよいbstrErr
ですcsError
か?
33701 次
5 に答える
20
キャストするだけでは不可能ですか:
_bstr_t b("Steve");
CString cs;
cs = (LPCTSTR) b;
プロジェクトがUnicodeの場合、これはうまくいくはずです。
于 2009-11-06T06:39:36.967 に答える
7
CString には、LPCSTR と LPCWSTR の両方のコンストラクターと代入演算子があるため、WideCharToMultiByte を呼び出す必要はなく、ユニコード モードまたは非ユニコード モードでキャストを間違えることはありません。
この方法で文字列を割り当てることができます:
csError = bstrErr.GetBSTR();
または、コンストラクタ CString csError( bstrErr.GetBSTR() ); を使用します。
GetBSTR を使用しています。(LPCWSTR) で bstrErr をキャストするのと同じことですが、私は読みやすさのためにそれを好みます。
于 2009-11-17T04:49:41.523 に答える
3
Unicode用にコンパイルする場合は、カプセル化されたBSTRをCStringに割り当てるだけです。ANSI用にコンパイルする場合は、変換にWideCharToMultiByte()を使用する必要があります。
また、カプセル化されたBSTRは、空の文字列に対応するnullになる可能性があることに注意してください。これに注意を払わないと、プログラムは未定義の動作に遭遇します。
于 2009-11-06T06:43:04.947 に答える