C#解析char型指针所指向的内容(实例解析)

 更新时间:2024年03月01日 10:36:43   作者:澄鑫  
在c++代码中定义了一个功能函数,这个功能函数会将计算的结果写入一个字符串型的数组中output,然后c#会调用c++导出的dll中的接口函数,然后获取这个output并解析成string类型,本文通过实例解析C# char型指针所指向的内容,感兴趣的朋友一起看看吧

指针的概念

指针是一个特殊的变量,它里面存储的数值被解释成为内存里的一个地址。要搞清一个指针需要搞清指针的四方面的内容:指针的类型,指针所指向的类型,指针的值或者叫指针所指向的内存区,还有指针本身所占据的内存区。让我们分别说明。

先声明几个指针放着做例子:

例一:

int *ptr;
char *ptr;
int **ptr;
int (*ptr)[3];
int *(*ptr)[4];

正文

1、背景

在c++代码中定义了一个功能函数,这个功能函数会将计算的结果写入一个字符串型的数组中output,然后c#会调用c++导出的dll中的接口函数,然后获取这个output并解析成string类型。

2、实例

c++:

CPPDLL_API int Function( char*& output)

c#:

[DllImport(@"Project1.dll", EntryPoint = "Function",CharSet = CharSet.Auto)]
public static extern int Function(ref IntPtr output);
IntPtr ptr = IntPtr.Zero;
int isok = Function(ref ptr);
// -> Unicode
byte[] bytes = System.Text.Encoding.Unicode.GetBytes(Marshal.PtrToStringUni(ptr));
// -> UTF8
string dec = System.Text.Encoding.UTF8.GetString(bytes);

错误代码:

string dec = Marshal.PtrToStringAnsi(ptr);

得到的dec是乱码,查询发现是因为内存编码是UTF8,Marshal不支持UTF转换,所以必须先转成Unicode再转成UTF8。

到此这篇关于C#解析char型指针所指向的内容的文章就介绍到这了,更多相关C# char指针内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • C# TextBox控件实现只能输入数字的方法

    C# TextBox控件实现只能输入数字的方法

    这篇文章主要介绍了C# TextBox控件实现只能输入数字的方法,本文使用TextBox的keypress事件实现这个需求,需要的朋友可以参考下
    2015-06-06
  • 深入委托与多播委托的详解

    深入委托与多播委托的详解

    本篇文章是对委托与多播委托进行了详细的分析介绍,需要的朋友参考下
    2013-06-06
  • DevExpress中GridControl列转义的实现方法

    DevExpress中GridControl列转义的实现方法

    这篇文章主要介绍了DevExpress中GridControl列转义的实现方法,在项目开发中有一定的实用价值,需要的朋友可以参考下
    2014-08-08
  • C# 使用Tcp/Udp协议的示例代码

    C# 使用Tcp/Udp协议的示例代码

    这篇文章主要介绍了C# 使用Tcp/Udp协议的示例,文中代码非常详细,帮助大家更好的理解和学习,感兴趣的朋友可以了解下
    2020-08-08
  • C#中深拷贝和浅拷贝的介绍与用法

    C#中深拷贝和浅拷贝的介绍与用法

    本文详细讲解了C#中深拷贝和浅拷贝的介绍与用法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-03-03
  • C#判断当前程序是否通过管理员运行的方法

    C#判断当前程序是否通过管理员运行的方法

    这篇文章主要介绍了C#判断当前程序是否通过管理员运行的方法,可通过非常简单的系统函数调用实现对当前程序是否通过管理员运行进行判定,是非常实用的技巧,需要的朋友可以参考下
    2014-11-11
  • C#排序算法的比较分析

    C#排序算法的比较分析

    这篇文章主要介绍了C#排序算法的比较,实例分析几种比较常见的算法,并对其时间复杂度与稳定性进行了详细的分析,需要的朋友可以参考下
    2014-11-11
  • Unity UGUI的InputField输入框组件使用详解

    Unity UGUI的InputField输入框组件使用详解

    这篇文章主要为大家介绍了Unity UGUI的InputField输入框组件使用详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-07-07
  • C#使用集合实现二叉查找树

    C#使用集合实现二叉查找树

    这篇文章介绍了C#使用集合实现二叉查找树的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-08-08
  • 使用C#实现插入各种表格到Word文档

    使用C#实现插入各种表格到Word文档

    在许多企业应用场景中,Word 文档依旧是最常用的信息呈现与内容输出格式,下面将介绍在 C# 中如何以编程方式创建 Word 文档、插入表格、设置样式,并扩展到动态行列与嵌套表格等高级操作,希望对大家有所帮助
    2025-11-11

最新评论