我正在处理C#代码中的char *(在不安全的部分)。有没有办法从C#调用strlen函数。不得不编写自定义strlen函数来搜索null终止符,这违背了所有常识。有没有办法从C#调用strlen或我可以访问的类似方法?
在大图中我试图将char *转换为字符串对象,但字符是ANSCII格式,所以我将使用.NET Encoding.Convert命名空间进行转换。但在我这样做之前,我需要知道字符串的长度。
答案 0 :(得分:5)
Marshal.PtrToStringAnsi()
完全符合您的要求:
分配托管字符串并将所有字符复制到第一个字符串 存储在非托管内存中的字符串中的空字符。
顺便提一下,该方法在指针上调用lstrlenA
,这实际上只是从kernel32.dll
导入的。换句话说, not 似乎是一个托管的“让我得到这个非托管字符串的长度”方法。