Marshal.PtrToStringAnsi Metoda

Definicja

Przydziela zarządzany String i kopiuje do niego cały niezarządzany ciąg ANSI (w systemie Windows) lub UTF-8 (w systemie Unix).

Przeciążenia

PtrToStringAnsi(IntPtr)

Kopiuje wszystkie znaki do pierwszego znaku null z niezarządzanego ciągu ANSI lub UTF-8 do zarządzanego Stringi rozszerza każdy znak do UTF-16.

PtrToStringAnsi(IntPtr, Int32)

Przydziela zarządzany Stringciąg , kopiuje do niego określoną liczbę znaków z niezarządzanego ciągu ANSI lub UTF-8 i rozszerza każdy znak do UTF-16.

PtrToStringAnsi(IntPtr)

Kopiuje wszystkie znaki do pierwszego znaku null z niezarządzanego ciągu ANSI lub UTF-8 do zarządzanego Stringi rozszerza każdy znak do 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

Parametry

ptr
IntPtr

nativeint

Adres pierwszego znaku niezarządzanego ciągu.

Zwraca

String

Ciąg zarządzany, który zawiera kopię niezarządzanego ciągu. Jeśli ptr parametr ma nullwartość , metoda zwraca ciąg o wartości null.

Atrybuty

Przykłady

W poniższym przykładzie użyto PtrToStringAnsi metody do utworzenia ciągu zarządzanego z tablicy niezarządzanej char .

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

Uwagi

PtrToStringAnsi jest przydatna w przypadku marshalingu niestandardowego lub podczas mieszania zarządzanego i niezarządzanych kodu. Ponieważ ta metoda tworzy kopię zawartości niezarządzanego ciągu, musisz zwolnić oryginalny ciąg zgodnie z potrzebami. Ta metoda zapewnia przeciwną funkcjonalność Marshal.StringToCoTaskMemAnsi metod i Marshal.StringToHGlobalAnsi .

Zobacz też

Dotyczy

PtrToStringAnsi(IntPtr, Int32)

Przydziela zarządzany Stringciąg , kopiuje do niego określoną liczbę znaków z niezarządzanego ciągu ANSI lub UTF-8 i rozszerza każdy znak do 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

Parametry

ptr
IntPtr

nativeint

Adres pierwszego znaku niezarządzanego ciągu.

len
Int32

Liczba bajtów ciągu wejściowego do skopiowania.

Zwraca

String

Ciąg zarządzany, który zawiera kopię ciągu natywnego, jeśli wartość ptr parametru nie nulljest ; w przeciwnym razie ta metoda zwraca wartość null.

Atrybuty

Wyjątki

Parametr len ma wartość niższą niż zero.

Przykłady

W poniższym przykładzie użyto PtrToStringAnsi metody do utworzenia ciągu zarządzanego z tablicy niezarządzanejchar .

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

Uwagi

PtrToStringAnsi jest przydatna w przypadku marshalingu niestandardowego lub podczas mieszania zarządzanego i niezarządzanych kodu. Ponieważ ta metoda tworzy kopię zawartości niezarządzanego ciągu, musisz zwolnić oryginalny ciąg zgodnie z potrzebami. Ta metoda zapewnia przeciwną funkcjonalność Marshal.StringToCoTaskMemAnsi metod i Marshal.StringToHGlobalAnsi .

Zobacz też

Dotyczy