我想将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_);
这是正确的吗?换句话说,是否有任何数据丢失?如果是,正确的解决方案是什么?
发布于 2013-03-26 12:12:10
您可能应该使用SysAllocString
来完成此操作- BSTR还包含长度前缀,但您的代码中并未包含该前缀。
std::wstring str_ = QString("some texts").toStdWString();
BSTR bstr_ = SysAllocString(str_.c_str());
除此之外,这里没有什么可丢失的- BSTR和QString都使用16位Unicode编码,因此彼此之间的转换应该根本不会修改内部数据缓冲区。
发布于 2013-11-01 01:12:59
要将BSTR转换为QString,只需使用QString::fromUtf16
函数:
BSTR bstrTest = SysAllocString(L"ConvertMe");
QString qstringTest = QString::fromUtf16(bstrTest);
https://stackoverflow.com/questions/15617510
复制相似问题