Marshal.PtrToStringAnsi Метод

Определение

Выделяет управляемый String и копирует все или часть неуправляемой строки ANSI (в Windows) или UTF-8 (в Unix).

Перегрузки

PtrToStringAnsi(IntPtr)

Копирует все символы до первого null-символа из неуправляемой строки ANSI или UTF-8 в управляемую Stringи расширяет каждый символ до UTF-16.

PtrToStringAnsi(IntPtr, Int32)

Выделяет управляемый String, копирует указанное число символов из неуправляемой строки ANSI или UTF-8 в нее и расширяет каждый символ до UTF-16.

PtrToStringAnsi(IntPtr)

Исходный код:
Marshal.cs
Исходный код:
Marshal.cs
Исходный код:
Marshal.cs

Копирует все символы до первого null-символа из неуправляемой строки ANSI или UTF-8 в управляемую Stringи расширяет каждый символ до 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

Параметры

ptr
IntPtr

nativeint

Адрес первого символа неуправляемой строки.

Возвращаемое значение

Управляемая строка, содержащая копию неуправляемой строки. Если ptrnull, метод возвращает строку NULL.

Атрибуты

Примеры

В следующем примере используется метод PtrToStringAnsi для создания управляемой строки из неуправляемого массива 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);
}

Комментарии

PtrToStringAnsi полезно для пользовательского маршалинга или при сочетании управляемого и неуправляемого кода. Так как этот метод создает копию содержимого неуправляемой строки, необходимо освободить исходную строку соответствующим образом. Этот метод предоставляет противоположные функциональные возможности методов Marshal.StringToCoTaskMemAnsi и Marshal.StringToHGlobalAnsi.

См. также раздел

Применяется к

PtrToStringAnsi(IntPtr, Int32)

Исходный код:
Marshal.cs
Исходный код:
Marshal.cs
Исходный код:
Marshal.cs

Выделяет управляемый String, копирует указанное число символов из неуправляемой строки ANSI или UTF-8 в нее и расширяет каждый символ до 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

Параметры

ptr
IntPtr

nativeint

Адрес первого символа неуправляемой строки.

len
Int32

Число байтов входной строки для копирования.

Возвращаемое значение

Управляемая строка, содержащая копию собственной строки, если значение параметра ptr не null; в противном случае этот метод возвращает null.

Атрибуты

Исключения

len меньше нуля.

Примеры

В следующем примере используется метод PtrToStringAnsi для создания управляемой строки из неуправляемого массива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);
}

Комментарии

PtrToStringAnsi полезно для пользовательского маршалинга или при сочетании управляемого и неуправляемого кода. Так как этот метод создает копию содержимого неуправляемой строки, необходимо освободить исходную строку соответствующим образом. Этот метод предоставляет противоположные функциональные возможности методов Marshal.StringToCoTaskMemAnsi и Marshal.StringToHGlobalAnsi.

См. также раздел

Применяется к