Compartilhar via


Marshal.PtrToStringAnsi Método

Definição

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 .

Confira também

Aplica-se a