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