gpt4 book ai didi

c# - 使用 COM 将字符串从 C# 传递到 cpp

转载 作者:太空狗 更新时间:2023-10-29 23:10:01 27 4
gpt4 key购买 nike

我有一个由 cpp 客户端使用的 C# COM 服务器。

其中一个 C# 方法返回一个字符串。

至少根据内存 View ,在 cpp 中返回的字符串以 Unicode (UTF-16) 表示。

  1. COM 字符串总是这样吗?
  2. 有没有办法改用 UTF-8?
  3. 我看到一些代码,其中字符串作为字节数组在 cpp 和 c# 之间传递。这有什么好处吗?

最佳答案

  1. 是的。标准的 COM 字符串类型是 BSTR。它是以 UTF16 编码的 Unicode 字符串,就像 Windows 的原生字符串类型一样。
  2. 不,COM 方法无法理解 UTF8 字符串,它会将其转换为中文。 UTF8 是文本文件的良好编码,不适用于在内存中操作字符串的程序。 UTF8 需要 1 到 4 个字节之间的任意位置来编码 Unicode 代码点。与获取字符大小或索引字符等基本字符串操作非常不兼容。
  3. C 和 C++ 程序倾向于使用与“char”类型兼容的 8 位编码。这是一种古老的做法,可以追溯到 Unicode 出现之前的时代。它没有什么吸引人的地方,有很多 8 位编码。典型的问题是,作为文本输入的数据只有在使用相同 8 位编码的程序读取时才能正确解释。换句话说,当计算机相距不到 1000 英里时。在欧洲更少。

关于c# - 使用 COM 将字符串从 C# 传递到 cpp,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2705255/

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