Marshal.PtrToStringAnsi 方法

定義

配置受控 String,並將非受控 ANSI (在 Windows 上) 或 UTF-8 (在 Unix 上) 字串的全部或部分複製到其中。

多載

PtrToStringAnsi(IntPtr)

從非受控 ANSI 或 UTF-8 字串將直到第一個 Null 字元的所有字元複製到受控 String,並將每個字元擴展為 UTF-16。

PtrToStringAnsi(IntPtr, Int32)

配置受控 String,從非受控 ANSI 或 UTF-8 字串將指定數目的字元複製到其中,並將每一個字元擴展為 UTF-16。

PtrToStringAnsi(IntPtr)

從非受控 ANSI 或 UTF-8 字串將直到第一個 Null 字元的所有字元複製到受控 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

Unmanaged 字串第一個字元的位址。

傳回

String

存有 Unmanaged 字串複本的 Managed 字串。 如果 ptrnull,方法就會傳回 null 字串。

屬性

範例

下列範例會 PtrToStringAnsi 使用 方法來從 Unmanaged char 陣列建立 Managed 字串。

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 適用于自訂封送處理,或在混合 Managed 和 Unmanaged 程式碼時使用。 由於這個方法會建立 Unmanaged 字串內容的複本,因此您必須視需要釋放原始字串。 這個方法提供 和 Marshal.StringToHGlobalAnsi 方法的 Marshal.StringToCoTaskMemAnsi 相反功能。

另請參閱

適用於

PtrToStringAnsi(IntPtr, Int32)

配置受控 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

Unmanaged 字串第一個字元的位址。

len
Int32

要複製的輸入字串的位元組計數。

傳回

String

如果 ptr 參數的值不是 null,則為包含原生字串複本的 Managed 字串,否則這個方法會傳回 null

屬性

例外狀況

len 小於零。

範例

下列範例會 PtrToStringAnsi 使用 方法來從 Unmanaged char 陣列建立 Managed 字串。

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 適用于自訂封送處理,或在混合 Managed 和 Unmanaged 程式碼時使用。 由於這個方法會建立 Unmanaged 字串內容的複本,因此您必須視需要釋放原始字串。 這個方法提供 和 Marshal.StringToHGlobalAnsi 方法的 Marshal.StringToCoTaskMemAnsi 相反功能。

另請參閱

適用於