在 C# 中处理 char*(strlen 函数?)

Handling char* in C# (strlen function?)

本文关键字:strlen 函数 处理 char      更新时间:2023-10-16

我正在处理 C# 代码中的字符*(在不安全的部分)。有没有办法从 C# 调用 strlen 函数。必须编写自定义 strlen 函数来搜索空终止符违背所有常识。有没有办法从 C# 或我有权访问的类似方法调用 strlen?

从大局来看,我正在尝试将 char* 转换为字符串对象,但字符采用 ANSCII 格式,因此我将使用 .NET Encoding.Convert 命名空间来转换它。但是在执行此操作之前,我需要知道字符串的长度。

Marshal.PtrToStringAnsi()完全符合您的需求:

分配一个托管字符串,并将所有字符复制到第一个 存储在非托管内存中的字符串中的 null 字符。

顺便说一下,该方法在指针上调用lstrlenA,这实际上只是从kernel32.dll导入。换句话说,似乎没有可用的托管"获取此非托管字符串的长度"方法。