Marshal.PtrToStringAnsi Metoda

Definicja

Alokuje zarządzaną String i kopiuje do niej wszystkie lub część niezarządzanego ciągu ANSI.Allocates a managed String and copies all or part of an unmanaged ANSI string into it.

Przeciążenia

PtrToStringAnsi(IntPtr)

Kopiuje wszystkie znaki do pierwszego znaku null z niezarządzanego ciągu ANSI na zarządzaną Stringi rozszerza każdy znak ANSI na Unicode.Copies all characters up to the first null character from an unmanaged ANSI string to a managed String, and widens each ANSI character to Unicode.

PtrToStringAnsi(IntPtr, Int32)

Alokuje zarządzaną String, kopiuje określoną liczbę znaków z niezarządzanego ciągu ANSI do niego i rozszerza każdy znak ANSI na Unicode.Allocates a managed String, copies a specified number of characters from an unmanaged ANSI string into it, and widens each ANSI character to Unicode.

PtrToStringAnsi(IntPtr)

Kopiuje wszystkie znaki do pierwszego znaku null z niezarządzanego ciągu ANSI na zarządzaną Stringi rozszerza każdy znak ANSI na Unicode.Copies all characters up to the first null character from an unmanaged ANSI string to a managed String, and widens each ANSI character to Unicode.

public:
 static System::String ^ PtrToStringAnsi(IntPtr ptr);
[System.Security.SecurityCritical]
public static string PtrToStringAnsi (IntPtr ptr);
static member PtrToStringAnsi : nativeint -> string
Public Shared Function PtrToStringAnsi (ptr As IntPtr) As String

Parametry

ptr
IntPtr

Adres pierwszego znaku niezarządzanego ciągu.The address of the first character of the unmanaged string.

Zwraca

Zarządzany ciąg, który przechowuje kopię niezarządzanego ciągu ANSI.A managed string that holds a copy of the unmanaged ANSI string. Jeśli ptr jest null, metoda zwraca ciąg o wartości null.If ptr is null, the method returns a null string.

Atrybuty

Przykłady

W poniższym przykładzie zastosowano metodę PtrToStringAnsi, aby utworzyć zarządzany ciąg z niezarządzanej tablicy char.The following example uses the PtrToStringAnsi method to create a managed string from an unmanaged char array.

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 przydatne w przypadku organizowania niestandardowego lub podczas mieszania kodu zarządzanego i niezarządzanego.PtrToStringAnsi is useful for custom marshaling or when mixing managed and unmanaged code. Ponieważ ta metoda tworzy kopię zawartości niezarządzanego ciągu, należy bezpłatnie zwolnić oryginalny ciąg.Because this method creates a copy of the unmanaged string's contents, you must free the original string as appropriate. Ta metoda zapewnia odwrotną funkcjonalność metod Marshal.StringToCoTaskMemAnsi i Marshal.StringToHGlobalAnsi.This method provides the opposite functionality of the Marshal.StringToCoTaskMemAnsi and Marshal.StringToHGlobalAnsi methods.

Zabezpieczenia

SecurityCriticalAttribute
Wymaga pełnego zaufania do bezpośredniego obiektu wywołującego.requires full trust for the immediate caller. Ten element członkowski nie może być używany przez częściowo zaufany lub przejrzysty kod.This member cannot be used by partially trusted or transparent code.

Zobacz też

PtrToStringAnsi(IntPtr, Int32)

Alokuje zarządzaną String, kopiuje określoną liczbę znaków z niezarządzanego ciągu ANSI do niego i rozszerza każdy znak ANSI na Unicode.Allocates a managed String, copies a specified number of characters from an unmanaged ANSI string into it, and widens each ANSI character to Unicode.

public:
 static System::String ^ PtrToStringAnsi(IntPtr ptr, int len);
[System.Security.SecurityCritical]
public static string PtrToStringAnsi (IntPtr ptr, int len);
static member PtrToStringAnsi : nativeint * int -> string
Public Shared Function PtrToStringAnsi (ptr As IntPtr, len As Integer) As String

Parametry

ptr
IntPtr

Adres pierwszego znaku niezarządzanego ciągu.The address of the first character of the unmanaged string.

len
Int32

Liczba bajtów ciągu wejściowego do skopiowania.The byte count of the input string to copy.

Zwraca

Zarządzany ciąg, który przechowuje kopię natywnego ciągu ANSI, jeśli wartość parametru ptr nie jest null; w przeciwnym razie ta metoda zwraca null.A managed string that holds a copy of the native ANSI string if the value of the ptr parameter is not null; otherwise, this method returns null.

Atrybuty

Wyjątki

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

Przykłady

W poniższym przykładzie zastosowano metodę PtrToStringAnsi, aby utworzyć zarządzany ciąg z niezarządzanej tablicychar.The following example uses the PtrToStringAnsi method to create a managed string from an unmanagedchar array.

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 przydatne w przypadku organizowania niestandardowego lub podczas mieszania kodu zarządzanego i niezarządzanego.PtrToStringAnsi is useful for custom marshaling or when mixing managed and unmanaged code. Ponieważ ta metoda tworzy kopię zawartości niezarządzanego ciągu, należy bezpłatnie zwolnić oryginalny ciąg.Because this method creates a copy of the unmanaged string's contents, you must free the original string as appropriate. Ta metoda zapewnia odwrotną funkcjonalność metod Marshal.StringToCoTaskMemAnsi i Marshal.StringToHGlobalAnsi.This method provides the opposite functionality of the Marshal.StringToCoTaskMemAnsi and Marshal.StringToHGlobalAnsi methods.

Zabezpieczenia

SecurityCriticalAttribute
Wymaga pełnego zaufania do bezpośredniego obiektu wywołującego.requires full trust for the immediate caller. Ten element członkowski nie może być używany przez częściowo zaufany lub przejrzysty kod.This member cannot be used by partially trusted or transparent code.

Zobacz też

Dotyczy