Share via


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)

來源:
Marshal.cs
來源:
Marshal.cs
來源:
Marshal.cs

從非受控 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 字串第一個字元的位址。

傳回

存有 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)

來源:
Marshal.cs
來源:
Marshal.cs
來源:
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

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

len
Int32

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

傳回

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

屬性

例外狀況

len 小於零。

範例

下列範例會 PtrToStringAnsi 使用 方法來從 Unmanagedchar 陣列建立 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相反功能。

另請參閱

適用於