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

将非托管 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

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

返回

一个托管字符串,用于保存非托管字符串的副本。 如果 ptrnull,该方法将返回 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

分配托管 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 方法的相反功能。

另请参阅

适用于