C++:将 wchar_t* 转换为 BSTR?

2023-11-22

我正在尝试转换wchar_t * to BSTR.

#include <iostream>
#include <atlstr.h>

using namespace std;

int main()
{
    wchar_t* pwsz = L"foo"; 

    BSTR bstr(pwsz);

    cout << SysStringLen(bstr) << endl;

    getchar();
}

这打印0,这比我希望的要少。进行此转换的正确方法是什么?


您需要使用SysAllocString(然后使用SysFreeString)。

BSTR bstr = SysAllocString(pwsz);

// ...

SysFreeString(bstr);

A BSTR是一个托管字符串,字符串的字符以其长度为前缀。SysAllocString分配正确的存储量并正确设置字符串的长度和内容。随着BSTR正确初始化,SysStringLen应该返回正确的长度。

如果您使用 C++,您可能需要考虑使用 RAII 样式类(甚至是 Microsoft 的_bstr_t)以确保您不会忘记任何SysFreeString calls.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C++:将 wchar_t* 转换为 BSTR? 的相关文章

  • C++ 求二维数组每一行的最大值

    我已经设法用这个找到我的二维数组的每一行的最小值 void findLowest int A Cm int n int m int min A 0 0 for int i 0 i lt n i for int j 0 j lt m j if
  • 为什么 POSIX 允许在只读模式下超出现有文件结尾 (fseek) 进行搜索

    为什么寻找文件结尾很有用 为什么 POSIX 让我们像示例中那样在以只读方式打开的文件中进行查找 c http en cppreference com w c io fseek http en cppreference com w c io
  • 跨多个控件共享事件处理程序

    在我用 C 编写的 Windows 窗体应用程序中 我有一堆按钮 当用户的鼠标悬停在按钮上时 我希望按钮的边框发生变化 目前我有以下多个实例 每个按钮一个副本 private void btnStopServer MouseEnter ob
  • HttpClient 像浏览器一样请求

    当我通过 HttpClient 类调用网站 www livescore com 时 我总是收到错误 500 可能服务器阻止了来自 HttpClient 的请求 1 还有其他方法可以从网页获取html吗 2 如何设置标题来获取html内容 当
  • .Net Core / 控制台应用程序 / 配置 / XML

    我第一次尝试使用新的 ConfigurationBuilder 和选项模式进入 Net Core 库 这里有很多很好的例子 https docs asp net en latest fundamentals configuration ht
  • 在 ASP.Net Core 2.0 中导出到 Excel

    我曾经使用下面的代码在 ASP NET MVC 中将数据导出到 Excel Response AppendHeader content disposition attachment filename ExportedHtml xls Res
  • 如何在 Team Foundation 上强制发表有意义的签入评论?

    我有一个开发团队有一个坏习惯 他们写道poor签入评论 当我们必须在团队基础上查看文件的历史记录时 这使得它成为一场噩梦 我已经启用了变更集评论政策 这样他们甚至可以在签到时留下评论 否则他们不会 我们就团队的工作质量进行了一些讨论 他们很
  • 从java中的字符串数组中删除空值

    java中如何从字符串数组中删除空值 String firstArray test1 test2 test4 我需要像这样没有 null 空 值的 firstArray String firstArray test1 test2 test4
  • C 中的位移位

    如果与有符号整数对应的位模式右移 则 1 vacant bit will be filled by the sign bit 2 vacant bit will be filled by 0 3 The outcome is impleme
  • 可空属性与可空局部变量

    我对以下行为感到困惑Nullable types class TestClass public int value 0 TestClass test new TestClass Now Nullable GetUnderlyingType
  • 检查 url 是否指向文件或页面

    我们需要以下内容 如果文件确实是文件 则从 URL 下载该文件 否则 如果它是一个页面 则什么也不做 举个简单的例子 我有以下命令来下载文件 My Computer Network DownloadFile http www wired c
  • 在 URL 中发送之前对特殊字符进行百分比编码

    我需要传递特殊字符 如 等 Facebook Twitter 和此类社交网站的 URL 为此 我将这些字符替换为 URL 转义码 return valToEncode Replace 21 Replace 23 Replace 24 Rep
  • 作为字符串的动态属性名称

    使用 DocumentDB 创建新文档时 我想设置属性名称动态地 目前我设置SomeProperty 像这样 await client CreateDocumentAsync dbs db colls x new SomeProperty
  • char指针或char变量的默认值是什么[重复]

    这个问题在这里已经有答案了 下面是我尝试打印 char 变量和指针的默认值 值的代码 但无法在控制台上看到它 它是否有默认值或只是无法读取 ASCII 范围 include
  • 如何构建印度尼西亚电话号码正则表达式

    这些是一些印度尼西亚的电话号码 08xxxxxxxxx 至少包含 11 个字符长度 08xxxxxxxxxxx 始终以 08 开头 我发现这个很有用 Regex regex new Regex 08 0 9 0 9 0 9 0 9 0 9
  • 如何在内存中存储分子?

    我想将分子存储在内存中 这些可以是简单的分子 Methane CH4 C H bond length 108 7 pm H H angle 109 degrees But also more complex molecules like p
  • ListDictionary 类是否有通用替代方案?

    我正在查看一些示例代码 其中他们使用了ListDictionary对象来存储少量数据 大约 5 10 个对象左右 但这个数字可能会随着时间的推移而改变 我使用此类的唯一问题是 与我所做的其他所有事情不同 它不是通用的 这意味着 如果我在这里
  • 如何在 C# 中播放在线资源中的 .mp3 文件?

    我的问题与此非常相似question https stackoverflow com questions 7556672 mp3 play from stream on c sharp 我有音乐网址 网址如http site com aud
  • 将变量分配给另一个变量,并将一个变量的更改反映到另一个变量中

    是否可以将一个变量分配给另一个变量 并且当您更改第二个变量时 更改会瀑布式下降到第一个变量 像这样 int a 0 int b a b 1 现在 b 和 a 都 1 我问这个问题的原因是因为我有 4 个要跟踪的对象 并且我使用名为 curr
  • 为什么 strtok 会导致分段错误?

    为什么下面的代码给出了Seg 最后一行有问题吗 char m ReadName printf nRead String s n m Writes OK char token token strtok m 如前所述 读取字符串打印没有问题 但

随机推荐

  • 自动修复 Sonar 发现的问题

    我正在修复一个非常古老的 Java 项目 大约有 8 年历史 中声纳捕获的问题 这是一个巨大的项目 有很多被声纳捕获的错误代码 虽然它们是非常琐碎的修复 但它们有很多 有没有办法自动修复一系列类似的问题 就像我有大约 1200 个 语句应该
  • Kiosk软件指导

    我需要开发一个信息亭系统 唯一的付款方式是信用卡 借记卡 信息亭需要与另一台 PC 联网 例如 如果顾客在自助服务终端上订购了商品 则需要将其发送到另一台电脑 商店员工可以在其中查看订购的商品 以下是我的以下解决方案 选项 1 基于网络的应
  • 没有越狱检测

    我正在尝试制作一个仅适用于越狱 iDevices 的应用程序 我已经有越狱检测代码 UIApplication sharedApplication canOpenURL NSURL URLWithString cydia UIAlertVi
  • WCF 中带有接口类型参数的通用返回类型

    如何从泛型类型参数中返回接口类型OperationContracts在我的 WCF REST 服务中 更具体地说 它适用于一个操作 但当我使用通用添加第二个操作时则不起作用T那是一个接口 我使用 JSON 作为请求和响应格式 向非 WCF
  • simple_salesforce python 中的父子关系查询,从有序字典中提取

    我正在尝试使用以下命令从 salesforce 查询信息simple salesforce包在Python中 问题在于 它将作为父子关系一部分的字段嵌套到有序字典中的有序字典中 我想 从 Opportunity 对象中找到 id 以及与该记
  • 如何在 Android 6.0 (API 23) 中继续使用浏览器书签更改

    在我的应用程序中 我一直在使用其中一些功能 这些功能将作为unknown使用 Android 6 0 时 buildToolsVersion 23 0 1 其功能为 Browser getAllVisitedUrls getContentR
  • 从中心项目启动我的 RecyclerView Horizo​​ntal Carousel

    我正在创建一个水平 RecyclerView 轮播 并从 RecyclerView 的第一个项目开始缩放焦点项目 自定义CenterZoomLayoutManager的代码 public class CenterZoomLayoutMana
  • 计算 Django 模板中两个日期之间的天数

    我有两个日期 想要显示一条消息 例如 距离试用期结束还剩 n 天 在哪里n是两个给定日期之间的天数 在视图内执行此操作是否更好 或者是否有一种快速方法在模板本身内执行此操作 Use 次以来模板标签
  • SQLAlchemy 和标量值[重复]

    这个问题在这里已经有答案了 我有一个关于 SQLAlchemy 的简单问题 是否可以从结果中获取行作为标量而不是元组 换句话说 我想要一个相当于 i 0 for i in self archive query IRTerm term dis
  • NSOrderedSet 和 SwiftUI ForEach

    我正在尝试使用 CoreData 和 SwiftUI 并有两个实体 狗与行 Dog 之间是一对多的关系 public class Dog NSManagedObject Identifiable NSManaged public var n
  • C# 是否可以在调整频率的同时产生恒定的声音?

    是否有可能在 C 中生成恒定的声音并在声音发出时控制其频率 我尝试过这样的事情 for int i 500 i lt 15000 i 1 Console Beep i 500 但由于是同步的 循环会等待每次蜂鸣声结束 所以我尝试了这个 fo
  • TypeScript 中 type[] 和 [type] 的区别

    假设我们有两个接口 interface WithStringArray1 property string interface WithStringArray2 property string 让我们声明这些类型的一些变量 let type1
  • VS Code 扩展 - 如何将 WebviewPanel 添加到侧边栏?

    根据这一页网络视图可以 在侧边栏或面板区域中呈现 这些示例展示了如何呈现为编辑器面板 vscode window createWebviewPanel catCoding Identifies the type of the webview
  • 如何在 PHP 中将数据的十六进制表示形式转换为二进制数据?

    我熟悉php的功能bin2hex 用于将二进制数据转换为其十六进制表示形式 但是 将数据的十六进制表示形式转换回二进制数据的补码函数是什么 例如 foo hello foo bin2hex foo echo foo Displays 686
  • 如何仅将 git 存储库的子目录部署/推送到 Heroku?

    我有一个项目使用Serve并使用 Git 进行版本控制 服务创建一个output包含我想要部署到 Heroku 的静态文件的文件夹 我不想部署 Serve 项目本身 因为 Heroku Cedar 堆栈似乎不太喜欢它 但最重要的是我想利用
  • Windows Phone 8 更改强调色和主题颜色

    我正在为 Windows Phone 8 创建一个应用程序 并且我想更改主题颜色 而不管用户在手机操作系统中设置的主题如何 就像其他应用程序 例如 Skype 执行此操作一样 到目前为止 我只能通过访问 XAML 中的 LayoutRoot
  • 与 C++ 编码标准相关的过早优化和过早悲观化

    赫伯 萨特的C 编码标准说要避免Premature optimization and Premature pessimization 但我觉得两者都在做同样的事情 因此 希望有人帮助澄清这两个概念及其之间的区别 如果你能举出一些例子 对其他
  • const int*、const int * const 和 int const * 之间有什么区别?

    我总是搞乱如何使用const int const int const and int const 正确 是否有一套规则来定义你可以做什么和不能做什么 我想知道在分配 传递给函数等方面所有该做和不该做的事情 向后阅读 由顺时针 螺旋规则 in
  • Flexbox 使一件物品比其他物品大 4 倍

    我正在看这个 Flexbox 备忘单 http www sketchingwithcss com samplechapter cheatsheet html wrapcolumn 这里我们有一个例子 我想让大项目比小项目大 4 倍 而不是大
  • C++:将 wchar_t* 转换为 BSTR?

    我正在尝试转换wchar t to BSTR include