Marshal.PtrToStringAnsi Method

Definition

分配托管 String,并向其复制所有或部分非托管 ANSI 字符串。Allocates a managed String and copies all or part of an unmanaged ANSI string into it.

Overloads

PtrToStringAnsi(IntPtr)

将非托管 ANSI 字符串中第一个空字符之前的所有字符复制到托管 String,并将每个 ANSI 字符扩展为 Unicode 字符。Copies all characters up to the first null character from an unmanaged ANSI string to a managed String, and widens each ANSI character to Unicode.

PtrToStringAnsi(IntPtr, Int32)

分配托管 String,然后从非托管 ANSI 字符串向其复制指定数目的字符,并将每个 ANSI 字符扩展为 Unicode 字符。Allocates a managed String, copies a specified number of characters from an unmanaged ANSI string into it, and widens each ANSI character to Unicode.

PtrToStringAnsi(IntPtr)

将非托管 ANSI 字符串中第一个空字符之前的所有字符复制到托管 String,并将每个 ANSI 字符扩展为 Unicode 字符。Copies all characters up to the first null character from an unmanaged ANSI string to a managed String, and widens each ANSI character to Unicode.

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

Parameters

ptr
IntPtr

非托管字符串的第一个字符的地址。The address of the first character of the unmanaged string.

Returns

String

包含非托管 ANSI 字符串的副本的托管字符串。A managed string that holds a copy of the unmanaged ANSI string. 如果 ptrnull,则该方法返回一个 Null 字符串。If ptr is null, the method returns a null string.

Attributes

Examples

下面的示例使用 PtrToStringAnsi 方法从非托管的 char 数组创建托管字符串。The following example uses the PtrToStringAnsi method to create a managed string from an unmanaged char array.

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);
}

Remarks

PtrToStringAnsi 适用于自定义封送或混合托管和非托管代码。PtrToStringAnsi is useful for custom marshaling or when mixing managed and unmanaged code. 由于此方法创建非托管字符串的内容的副本,因此必须根据需要释放原始字符串。Because this method creates a copy of the unmanaged string's contents, you must free the original string as appropriate. 此方法提供 Marshal.StringToCoTaskMemAnsiMarshal.StringToHGlobalAnsi 方法的相反功能。This method provides the opposite functionality of the Marshal.StringToCoTaskMemAnsi and Marshal.StringToHGlobalAnsi methods.

See also

PtrToStringAnsi(IntPtr, Int32)

分配托管 String,然后从非托管 ANSI 字符串向其复制指定数目的字符,并将每个 ANSI 字符扩展为 Unicode 字符。Allocates a managed String, copies a specified number of characters from an unmanaged ANSI string into it, and widens each ANSI character to Unicode.

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);
static member PtrToStringAnsi : nativeint * int -> string
Public Shared Function PtrToStringAnsi (ptr As IntPtr, len As Integer) As String

Parameters

ptr
IntPtr

非托管字符串的第一个字符的地址。The address of the first character of the unmanaged string.

len
Int32

要复制的输入字符串的字节数。The byte count of the input string to copy.

Returns

String

如果 ptr 参数的值不是 null,则为包含本机 ANSI 字符串副本的托管字符串;否则,此方法返回 nullA managed string that holds a copy of the native ANSI string if the value of the ptr parameter is not null; otherwise, this method returns null.

Attributes

Exceptions

len 小于零。len is less than zero.

Examples

下面的示例使用 PtrToStringAnsi 方法从非托管的char 数组创建托管字符串。The following example uses the PtrToStringAnsi method to create a managed string from an unmanagedchar array.

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);
}

Remarks

PtrToStringAnsi 适用于自定义封送或混合托管和非托管代码。PtrToStringAnsi is useful for custom marshaling or when mixing managed and unmanaged code. 由于此方法创建非托管字符串的内容的副本,因此必须根据需要释放原始字符串。Because this method creates a copy of the unmanaged string's contents, you must free the original string as appropriate. 此方法提供 Marshal.StringToCoTaskMemAnsiMarshal.StringToHGlobalAnsi 方法的相反功能。This method provides the opposite functionality of the Marshal.StringToCoTaskMemAnsi and Marshal.StringToHGlobalAnsi methods.

See also

Applies to