Marshal.PtrToStringAnsi Yöntem

Tanım

Yönetilen String bir ayırır ve yönetilmeyen ANSI (Windows üzerinde) veya UTF-8 (Unix üzerinde) dizesinin tamamını veya bir kısmını bu dizeye kopyalar.

Aşırı Yüklemeler

PtrToStringAnsi(IntPtr)

Yönetilmeyen bir ANSI veya UTF-8 dizesinden ilk null karaktere kadar olan tüm karakterleri yönetilen Stringbir dizeye kopyalar ve her karakteri UTF-16'ya genişleter.

PtrToStringAnsi(IntPtr, Int32)

Yönetilen Stringbir ayırır, yönetilmeyen bir ANSI veya UTF-8 dizesinden belirtilen sayıda karakteri bu dizeye kopyalar ve her karakteri UTF-16'ya genişleter.

PtrToStringAnsi(IntPtr)

Yönetilmeyen bir ANSI veya UTF-8 dizesinden ilk null karaktere kadar olan tüm karakterleri yönetilen Stringbir dizeye kopyalar ve her karakteri UTF-16'ya genişleter.

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

Parametreler

ptr
IntPtr

nativeint

Yönetilmeyen dizenin ilk karakterinin adresi.

Döndürülenler

String

Yönetilmeyen dizenin bir kopyasını tutan yönetilen dize. ise ptr null, yöntemi null dize döndürür.

Öznitelikler

Örnekler

Aşağıdaki örnek, yönetilmeyen char bir diziden yönetilen dize oluşturmak için yöntemini kullanırPtrToStringAnsi.

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);
}

Açıklamalar

PtrToStringAnsi özel hazırlama için veya yönetilen ve yönetilmeyen kodu karıştırırken kullanışlıdır. Bu yöntem yönetilmeyen dizenin içeriğinin bir kopyasını oluşturduğundan, özgün dizeyi uygun şekilde serbest bıraktırmalısınız. Bu yöntem, ve Marshal.StringToHGlobalAnsi yöntemlerinin Marshal.StringToCoTaskMemAnsi ters işlevselliğini sağlar.

Ayrıca bkz.

Şunlara uygulanır

PtrToStringAnsi(IntPtr, Int32)

Yönetilen Stringbir ayırır, yönetilmeyen bir ANSI veya UTF-8 dizesinden belirtilen sayıda karakteri bu dizeye kopyalar ve her karakteri UTF-16'ya genişleter.

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

Parametreler

ptr
IntPtr

nativeint

Yönetilmeyen dizenin ilk karakterinin adresi.

len
Int32

Kopyalanacak giriş dizesinin bayt sayısı.

Döndürülenler

String

Parametresinin değeri ptr değilse null, yerel dizenin bir kopyasını tutan yönetilen dize; aksi takdirde, bu yöntem döndürür null.

Öznitelikler

Özel durumlar

len, sıfırdan küçüktür.

Örnekler

Aşağıdaki örnek, yönetilmeyenchar bir diziden yönetilen dize oluşturmak için yöntemini kullanırPtrToStringAnsi.

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);
}

Açıklamalar

PtrToStringAnsi özel hazırlama için veya yönetilen ve yönetilmeyen kodu karıştırırken kullanışlıdır. Bu yöntem yönetilmeyen dizenin içeriğinin bir kopyasını oluşturduğundan, özgün dizeyi uygun şekilde serbest bıraktırmalısınız. Bu yöntem, ve Marshal.StringToHGlobalAnsi yöntemlerinin Marshal.StringToCoTaskMemAnsi ters işlevselliğini sağlar.

Ayrıca bkz.

Şunlara uygulanır