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

时间:2012-04-11 19:41:02

标签: c# c++ character-encoding strlen arrays

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

在大图中我试图将char *转换为字符串对象,但字符是ANSCII格式,所以我将使用.NET Encoding.Convert命名空间进行转换。但在我这样做之前,我需要知道字符串的长度。

1 个答案:

答案 0 :(得分:5)

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

  

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

顺便提一下,该方法在指针上调用lstrlenA,这实际上只是从kernel32.dll导入的。换句话说, not 似乎是一个托管的“让我得到这个非托管字符串的长度”方法。

相关问题