Marshal.PtrToStringAnsi 方法

定义

分配托管String,并将非托管 ANSI(Windows)或 UTF-8(Unix)字符串的所有或部分复制到其中。

重载

名称 说明
PtrToStringAnsi(IntPtr)

将非托管 ANSI 或 UTF-8 字符串中的所有字符复制到托管 String字符,并将每个字符扩展为 UTF-16。

PtrToStringAnsi(IntPtr, Int32)

分配托管 String字符,将非托管 ANSI 或 UTF-8 字符串中的指定数目的字符复制到其中,并将每个字符扩展为 UTF-16。

PtrToStringAnsi(IntPtr)

Source:
Marshal.cs
Source:
Marshal.cs
Source:
Marshal.cs
Source:
Marshal.cs
Source:
Marshal.cs

将非托管 ANSI 或 UTF-8 字符串中的所有字符复制到托管 String字符,并将每个字符扩展为 UTF-16。

public:
 static System::String ^ PtrToStringAnsi(IntPtr ptr);
[System.Security.SecurityCritical]
public static string PtrToStringAnsi(IntPtr ptr);
public static string? PtrToStringAnsi(IntPtr ptr);
public static string PtrToStringAnsi(IntPtr ptr);
[<System.Security.SecurityCritical>]
static member PtrToStringAnsi : nativeint -> string
static member PtrToStringAnsi : nativeint -> string
Public Shared Function PtrToStringAnsi (ptr As IntPtr) As String

参数

ptr
IntPtr

nativeint

非托管字符串的第一个字符的地址。

返回

一个托管字符串,用于保存非托管字符串的副本。 ptr如果是null,该方法将返回 null 字符串。

属性

示例

以下示例使用 PtrToStringAnsi 该方法从非托管 char 数组创建托管字符串。

using namespace System;
using namespace System::Runtime::InteropServices;

void main()
{
    // Create an unmanaged c string.
    const char * myString = "Hello managed world (from the unmanaged world)!";
    
    // Convert the c string to a managed String.
    String ^ myManagedString = Marshal::PtrToStringAnsi((IntPtr) (char *) myString);
    
    // Display the string to the console.
    Console::WriteLine(myManagedString);
}

注解

PtrToStringAnsi 对于自定义封送处理或在混合托管和非托管代码时非常有用。 由于此方法创建非托管字符串内容的副本,因此必须根据需要释放原始字符串。 此方法提供与方法相反的功能Marshal.StringToCoTaskMemAnsiMarshal.StringToHGlobalAnsi

另请参阅

适用于

PtrToStringAnsi(IntPtr, Int32)

Source:
Marshal.cs
Source:
Marshal.cs
Source:
Marshal.cs
Source:
Marshal.cs
Source:
Marshal.cs

分配托管 String字符,将非托管 ANSI 或 UTF-8 字符串中的指定数目的字符复制到其中,并将每个字符扩展为 UTF-16。

public:
 static System::String ^ PtrToStringAnsi(IntPtr ptr, int len);
[System.Security.SecurityCritical]
public static string PtrToStringAnsi(IntPtr ptr, int len);
public static string PtrToStringAnsi(IntPtr ptr, int len);
[<System.Security.SecurityCritical>]
static member PtrToStringAnsi : nativeint * int -> string
static member PtrToStringAnsi : nativeint * int -> string
Public Shared Function PtrToStringAnsi (ptr As IntPtr, len As Integer) As String

参数

ptr
IntPtr

nativeint

非托管字符串的第一个字符的地址。

len
Int32

要复制的输入字符串的字节计数。

返回

一个托管字符串,如果参数的值 ptr 不是 null,则保存本机字符串的副本;否则,此方法返回 null

属性

例外

len 小于零。

示例

以下示例使用 PtrToStringAnsi 该方法从非托管char 数组创建托管字符串。

using namespace System;
using namespace System::Runtime::InteropServices;



void main()
{
    // Create an unmanaged c string.
    const char * myString = "Hello managed world (from the unmanaged world)!";

    // Convert the c string to a managed String.
    String ^ myManagedString = Marshal::PtrToStringAnsi((IntPtr) (char *) myString);

    // Display the string to the console.
    Console::WriteLine(myManagedString);
}

注解

PtrToStringAnsi 对于自定义封送处理或在混合托管和非托管代码时非常有用。 由于此方法创建非托管字符串内容的副本,因此必须根据需要释放原始字符串。 此方法提供与方法相反的功能Marshal.StringToCoTaskMemAnsiMarshal.StringToHGlobalAnsi

另请参阅

适用于