web-dev-qa-db-ja.com

BSTRをchar *に変換します

BSTRをchar *に変換する方法を知っている人はいますか?

更新:私はこれをやろうとしましたが、それが正しいか間違っているかわかりません。

char *p= _com_util::ConvertBSTRToString(URL->bstrVal);
strcpy(testDest,p );
14
barlyee

あなたのコードは大丈夫です。 ConvertBSTRToString それだけです。 strcpyに関しては、testDestpが指す文字列を保持するのに十分な大きさである必要があります。 ConvertBSTRToStringは新しい文字列を割り当てるので、行のどこかでそれを解放する必要があることに注意してください。完了したら、必ず次のことを行ってください。

delete[] p; 

ただし、いくつかの注意点があります( MSDNのBSTRドキュメント からわかるように):

  • Microsoft Windowsでは、Unicode文字の文字列(ワイド文字または2バイト文字)で構成されます。
  • 複数のヌル文字が埋め込まれている場合があります。

したがって、strcpyが常に期待どおりに機能するとは限りません

18
dirkgently