首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >将QString转换为BSTR,反之亦然

将QString转换为BSTR,反之亦然
EN

Stack Overflow用户
提问于 2013-03-25 22:31:50
回答 2查看 4.2K关注 0票数 3

我想将QString转换为BSTR,反之亦然。

下面是我尝试将QString转换为BSTR的方法:

代码语言:javascript
复制
std::wstring str_ = QString("some texts").toStdWString();
BSTR bstr_ = str_.c_str();

并将BSTR转换为QString

代码语言:javascript
复制
BSTR bstr_;
wchar_t *str_ = bstr_;
QString qstring_ = QString::fromWCharArray(str_);

这是正确的吗?换句话说,是否有任何数据丢失?如果是,正确的解决方案是什么?

EN

回答 2

Stack Overflow用户

发布于 2013-03-26 12:12:10

您可能应该使用SysAllocString来完成此操作- BSTR还包含长度前缀,但您的代码中并未包含该前缀。

代码语言:javascript
复制
std::wstring str_ = QString("some texts").toStdWString();
BSTR bstr_ = SysAllocString(str_.c_str());

除此之外,这里没有什么可丢失的- BSTR和QString都使用16位Unicode编码,因此彼此之间的转换应该根本不会修改内部数据缓冲区。

票数 5
EN

Stack Overflow用户

发布于 2013-11-01 01:12:59

要将BSTR转换为QString,只需使用QString::fromUtf16函数:

代码语言:javascript
复制
BSTR bstrTest = SysAllocString(L"ConvertMe");
QString qstringTest = QString::fromUtf16(bstrTest);
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15617510

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档