BSTRをchar *に変換する方法を知っている人はいますか?
更新:私はこれをやろうとしましたが、それが正しいか間違っているかわかりません。
char *p= _com_util::ConvertBSTRToString(URL->bstrVal);
strcpy(testDest,p );
あなたのコードは大丈夫です。 ConvertBSTRToString
それだけです。 strcpy
に関しては、testDest
はp
が指す文字列を保持するのに十分な大きさである必要があります。 ConvertBSTRToStringは新しい文字列を割り当てるので、行のどこかでそれを解放する必要があることに注意してください。完了したら、必ず次のことを行ってください。
delete[] p;
ただし、いくつかの注意点があります( MSDNのBSTR
ドキュメント からわかるように):
- Microsoft Windowsでは、Unicode文字の文字列(ワイド文字または2バイト文字)で構成されます。
- 複数のヌル文字が埋め込まれている場合があります。
したがって、strcpy
が常に期待どおりに機能するとは限りません。