Marshal.PtrToStringAnsi 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
配置受控 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 字串。 如果 ptr
null
,則方法會傳回 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.StringToCoTaskMemAnsi 和 Marshal.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.StringToCoTaskMemAnsi 和 Marshal.StringToHGlobalAnsi 方法的相反功能。