3

に、またはその逆に変換QStringしたい。BSTR

これは私が変換しようとしているものQStringですBSTR:

std::wstring str_ = QString("some texts").toStdWString();
BSTR bstr_ = str_.c_str();

そしてに変換BSTRするQString

BSTR bstr_;
wchar_t *str_ = bstr_;
QString qstring_ = QString::fromWCharArray(str_);

これは正しいです?つまり、データの損失はありますか? はいの場合、正しい解決策は何ですか?

4

3 に答える 3

5

おそらくSysAllocStringこれを行うために使用する必要があります-BSTRには、コードに含まれていない長さのプレフィックスも含まれています。

std::wstring str_ = QString("some texts").toStdWString();
BSTR bstr_ = SysAllocString(str_.c_str());

それ以外に、ここで失われるものはありません。BSTR と QString はどちらも 16 ビットの Unicode エンコーディングを使用するため、相互に変換しても内部データ バッファーはまったく変更されません。

于 2013-03-26T04:12:10.430 に答える