3

C# コード (安全でないセクション) で char* を扱っています。C# から strlen 関数を呼び出す方法はありますか。null ターミネータを検索するために独自の strlen 関数を作成する必要があるのは、常識に反します。C# またはアクセスできる同様のメソッドから strlen を呼び出す方法はありませんか?

全体像では、char* を文字列オブジェクトに変換しようとしていますが、文字は ANSCII 形式であるため、.NET Encoding.Convert 名前空間を使用して変換します。しかし、その前に文字列の長さを知る必要があります。

4

1 に答える 1

5

Marshal.PtrToStringAnsi()あなたが必要とすることを正確に行います:

マネージド String を割り当て、アンマネージド メモリに格納されている文字列から最初の null 文字までのすべての文字をそれにコピーします。

ちなみに、このメソッドはlstrlenAポインターを呼び出しますが、これは実際には からの単なるインポートですkernel32.dll。言い換えれば、管理された「この管理されていない文字列の長さを取得する」方法は利用できないようです

于 2012-04-11T19:50:17.180 に答える