OLECHAR* BSTR wstring之间的转化

OLECHAR在window定义为如果定义_WIN32 typedef WCHAR OLECHAR。BSTR为OLECHAR*的内容首地址,4BYTE(字符串长度)+BSTR指向内容。

以下转化基于WIN32的,此时OLECHAR为WCHAR。

wstring转化为BSTR

wstring wstrSrc=L"正餐";

BSTR bstrDst = SysAllocString(wstrSrc.c_str());

BSTR转化为wstring

wstring wstrdst(bstr,SysStringLen(bstr);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
根据引用和引用的信息,您在使用_vs2022_和_Qt_编译时遇到了关于_BSTR_的编译错误。错误信息是_"C2440: “默认参数”: 无法从“const wchar_t ”换为“BSTR”_。从代码中可以看出,在测试函数_testString_中,您尝试将_c_str()_方法返回的_const char *_指针和_bstr_t_对象传递给_testString_函数,但类型不匹配导致编译错误。 要解决这个问题,您可以将_const char *_字符串换为_BSTR_类型,以便在调用_testString_函数时传递正确的参数类型。您可以使用_::SysAllocString_函数将_const char *_换为_BSTR_。示例代码如下: ```cpp void testString(const char* str1, const char* str2) { BSTR bstr1 = ::SysAllocString((const OLECHAR*)str1); BSTR bstr2 = ::SysAllocString((const OLECHAR*)str2); // 其他代码... } int main(int argc, char* argv[]) { unsigned char pSrc[] = { 0xE6, 0x88, 0x91, 0xE5, 0x90 , 0x83 , 0xE8 , 0xA5 , 0xBF , 0xE7 , 0xBA , 0xA2 , 0xE6 , 0x9F , 0xBF, 0x00 }; string str1 = (char*)pSrc; _bstr_t str2 = (char*)pSrc; testString(str1.c_str(), (const char*)str2); return 0; } ``` 另外,根据引用的信息,您还可以尝试在_qmake_文件中的_Win32_平台下添加以下编译选项来解决_BSTR_编译错误: ```bash win32: QMAKE_CXXFLAGS_RELEASE -= -Zc:strictStrings win32: QMAKE_CFLAGS_RELEASE -= -Zc:strictStrings win32: QMAKE_CFLAGS -= -Zc:strictStrings win32: QMAKE_CXXFLAGS -= -Zc:strictStrings ``` 这些编译选项将移除严格字符串检查,可能有助于解决编译错误。 请注意,以上提供的解决方案仅供参考,请根据您的具体情况进行调整和验证。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [VS + QT windows工程重新构建遇到的问题](https://blog.csdn.net/qq_34062754/article/details/109487424)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [_bstr_t 使用出现错误](https://blog.csdn.net/u012607841/article/details/19688901)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值