Marshal.PtrToStringAnsi Метод

Определение

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

Перегрузки

PtrToStringAnsi(IntPtr)

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

PtrToStringAnsi(IntPtr, Int32)

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

PtrToStringAnsi(IntPtr)

Копирует все символы вплоть до первого пустого из неуправляемой строки 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

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

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

String

Управляемая строка, содержащая копию неуправляемой строки. Если параметр ptr равен 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)

Выделяет управляемый объект типа 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

Копируемое количество байтов исходной строки.

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

String

Управляемая строка, хранящая копию исходной строки, если значение параметра 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 методы.

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

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