14

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

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

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

1 に答える 1

18

あなたのコードは大丈夫です。ConvertBSTRToStringそれだけです。に関してはstrcpytestDestが指す文字列を保持するのに十分な大きさが必要pです。ConvertBSTRToString は新しい文字列を割り当てるため、後で解放する必要があることに注意してください。完了したら、次のことを確認してください。

delete[] p; 

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

  • Microsoft Windows では、Unicode 文字 (ワイド文字または 2 バイト文字) の文字列で構成されます。
  • 複数の埋め込みヌル文字を含めることができます。

そのため、常に期待どおりに機能するとは限りstrcpy ません

于 2010-09-06T03:49:49.927 に答える