Marshal.PtrToStringAnsi Metoda
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
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)
- Źródło:
- Marshal.cs
- Źródło:
- Marshal.cs
- Źródło:
- Marshal.cs
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
Ciąg zarządzany, który zawiera kopię niezarządzanego ciągu. Jeśli ptr
parametr ma null
wartość , 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)
- Źródło:
- Marshal.cs
- Źródło:
- Marshal.cs
- Źródło:
- Marshal.cs
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
Ciąg zarządzany, który zawiera kopię ciągu natywnego, jeśli wartość ptr
parametru nie null
jest ; 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 .