Marshal.PtrToStringAnsi Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Aloca uma String gerenciada e copia toda ou parte de uma cadeia de caracteres ANSI (no Windows) ou UTF-8 (no Unix) não gerenciada.
Sobrecargas
PtrToStringAnsi(IntPtr) |
Copia todos os caracteres até o primeiro caractere nulo de uma cadeia de caracteres ANSI ou UTF-8 não gerenciada para uma String gerenciada e amplia cada caractere para UTF-16. |
PtrToStringAnsi(IntPtr, Int32) |
Aloca uma String gerenciada, copia um número especificado de caracteres de uma cadeia de caracteres ANSI ou UTF-8 não gerenciada e amplia cada caractere para UTF-16. |
PtrToStringAnsi(IntPtr)
- Origem:
- Marshal.cs
- Origem:
- Marshal.cs
- Origem:
- Marshal.cs
Copia todos os caracteres até o primeiro caractere nulo de uma cadeia de caracteres ANSI ou UTF-8 não gerenciada para uma String gerenciada e amplia cada caractere para 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
Parâmetros
- ptr
-
IntPtr
nativeint
O endereço do primeiro caractere da cadeia de caracteres não gerenciada.
Retornos
Uma cadeia de caracteres gerenciada que contém uma cópia da cadeia de caracteres não gerenciada. Se ptr
for null
, o método retornará uma cadeia de caracteres nula.
- Atributos
Exemplos
O exemplo a seguir usa o PtrToStringAnsi método para criar uma cadeia de caracteres gerenciada de uma matriz não gerenciada 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);
}
Comentários
PtrToStringAnsi é útil para marshaling personalizado ou ao misturar código gerenciado e não gerenciado. Como esse método cria uma cópia do conteúdo da cadeia de caracteres não gerenciada, você deve liberar a cadeia de caracteres original conforme apropriado. Esse método fornece a funcionalidade oposta dos Marshal.StringToCoTaskMemAnsi métodos e Marshal.StringToHGlobalAnsi .
Confira também
Aplica-se a
PtrToStringAnsi(IntPtr, Int32)
- Origem:
- Marshal.cs
- Origem:
- Marshal.cs
- Origem:
- Marshal.cs
Aloca uma String gerenciada, copia um número especificado de caracteres de uma cadeia de caracteres ANSI ou UTF-8 não gerenciada e amplia cada caractere para 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
Parâmetros
- ptr
-
IntPtr
nativeint
O endereço do primeiro caractere da cadeia de caracteres não gerenciada.
- len
- Int32
O número de bytes da cadeia de caracteres de entrada a ser copiado.
Retornos
Uma cadeia de caracteres gerenciada que mantém uma cópia da cadeia de caracteres nativa se o valor do parâmetro ptr
não for null
; caso contrário, esse método retornará null
.
- Atributos
Exceções
len
é menor que zero.
Exemplos
O exemplo a seguir usa o PtrToStringAnsi método para criar uma cadeia de caracteres gerenciada de uma matriz não gerenciadachar
.
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);
}
Comentários
PtrToStringAnsi é útil para marshaling personalizado ou ao misturar código gerenciado e não gerenciado. Como esse método cria uma cópia do conteúdo da cadeia de caracteres não gerenciada, você deve liberar a cadeia de caracteres original conforme apropriado. Esse método fornece a funcionalidade oposta dos Marshal.StringToCoTaskMemAnsi métodos e Marshal.StringToHGlobalAnsi .