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