Marshal.PtrToStringAnsi Método

Definição

Aloca um String gerenciado e copia toda ou parte de uma cadeia de caracteres ANSI (no Windows) ou UTF-8 (no Unix) não gerenciada nele.

Sobrecargas

Nome Description
PtrToStringAnsi(IntPtr)

Copia todos os caracteres para o primeiro caractere nulo de uma cadeia de caracteres ANSI ou UTF-8 não gerenciada para um Stringgerenciado e amplia cada caractere para UTF-16.

PtrToStringAnsi(IntPtr, Int32)

Aloca um Stringgerenciado, copia um número especificado de caracteres de uma cadeia de caracteres ANSI ou UTF-8 não gerenciada para ele e amplia cada caractere para UTF-16.

PtrToStringAnsi(IntPtr)

Copia todos os caracteres para o primeiro caractere nulo de uma cadeia de caracteres ANSI ou UTF-8 não gerenciada para um Stringgerenciado 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);
[<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 métodos e Marshal.StringToHGlobalAnsi dos Marshal.StringToCoTaskMemAnsi métodos.

Confira também

Aplica-se a

PtrToStringAnsi(IntPtr, Int32)

Aloca um Stringgerenciado, copia um número especificado de caracteres de uma cadeia de caracteres ANSI ou UTF-8 não gerenciada para ele 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

A contagem de bytes da cadeia de caracteres de entrada a ser copiada.

Retornos

Uma cadeia de caracteres gerenciada que contém uma cópia da cadeia de caracteres nativa se o valor do ptr parâmetro não nullfor; 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 métodos e Marshal.StringToHGlobalAnsi dos Marshal.StringToCoTaskMemAnsi métodos.

Confira também

Aplica-se a