gpt4 book ai didi

在 C 中将 BSTR 转换为 CHAR* 以及将 CHAR* 转换为 BSTR

转载 作者:行者123 更新时间:2023-11-30 14:29:32 26 4
gpt4 key购买 nike

我必须将 BSTR 转换为 C 中的 CHAR* 数据类型。是否有办法在不使用 VC++ 库或函数的情况下执行此操作。代码必须是纯 C 语言。我认为“comutil.h”有函数,但我想它们是 C++ 语言。

另外,关于SysAllocString函数,我们可以在C中使用它并转换为CHAR*吗?请帮忙。

谢谢,斯韦拉普

最佳答案

您可以使用 SysAllocStringByteLen() 将 char* 转换为 BSTR。但只有当 char* 仅包含 ASCII 字符时,这才是安全的,不会发生字符转换。不引起问题的情况非常罕见。

下一跃点是 MultiByteToWideChar(),您通常希望将 CodePage 参数设置为 CP_ACP,除非您知道字符串以其他方式编码。这会产生一个宽字符串,然后您可以将其传递给 SysAllocString() 以获取 BSTR。

另一种方法是 WideCharToMultiByte(),直接传递 BSTR 会起作用,除非它包含嵌入的 0 字符。无论如何,转换都是有损的,请注意,当您使用包含重音字符或无法在您使用的代码页中表示的任何其他内容的字符串时,这可能会导致相当大的麻烦。

关于在 C 中将 BSTR 转换为 CHAR* 以及将 CHAR* 转换为 BSTR,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4508982/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com