共用方式為


Marshal.PtrToStringAnsi 方法

定義

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

多載

PtrToStringAnsi(IntPtr)

從 Unmanaged ANSI 或 UTF-8 字串將所有字元複製到 Managed String,並將每個字元擴展為 UTF-16。

PtrToStringAnsi(IntPtr, Int32)

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

PtrToStringAnsi(IntPtr)

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

從 Unmanaged ANSI 或 UTF-8 字串將所有字元複製到 Managed 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.StringToCoTaskMemAnsiMarshal.StringToHGlobalAnsi 方法的相反功能。

另請參閱

適用於

PtrToStringAnsi(IntPtr, Int32)

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

配置 Managed 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.StringToCoTaskMemAnsiMarshal.StringToHGlobalAnsi 方法的相反功能。

另請參閱

適用於