Hes*_*dsi 3 windows qt bstr wchar-t wstring
我想转换QString
成BSTR
反之亦然.
这是我尝试转换QString
为BSTR
:
std::wstring str_ = QString("some texts").toStdWString();
BSTR bstr_ = str_.c_str();
Run Code Online (Sandbox Code Playgroud)
并转换BSTR
为QString
:
BSTR bstr_;
wchar_t *str_ = bstr_;
QString qstring_ = QString::fromWCharArray(str_);
Run Code Online (Sandbox Code Playgroud)
它是否正确?换句话说,是否有任何数据丢失?如果是,那么正确的解决方案是什么?
你可能应该SysAllocString
这样做 - BSTR也包含长度前缀,代码中不包含长度前缀.
std::wstring str_ = QString("some texts").toStdWString();
BSTR bstr_ = SysAllocString(str_.c_str());
Run Code Online (Sandbox Code Playgroud)
除此之外,这里没有任何东西要丢失 - BSTR和QString都使用16位Unicode编码,因此相互之间的转换根本不应该修改内部数据缓冲区.
归档时间: |
|
查看次数: |
3406 次 |
最近记录: |