Marshal.PtrToStringAnsi Method
Definition
Important
Some information relates to prerelease product that may be substantially modified before it’s released. Microsoft makes no warranties, express or implied, with respect to the information provided here.
Allocates a managed String and copies all or part of an unmanaged ANSI (on Windows) or UTF-8 (on Unix) string into it.
Overloads
PtrToStringAnsi(IntPtr) |
Copies all characters up to the first null character from an unmanaged ANSI or UTF-8 string to a managed String, and widens each character to UTF-16. |
PtrToStringAnsi(IntPtr, Int32) |
Allocates a managed String, copies a specified number of characters from an unmanaged ANSI or UTF-8 string into it, and widens each character to UTF-16. |
PtrToStringAnsi(IntPtr)
- Source:
- Marshal.cs
- Source:
- Marshal.cs
- Source:
- Marshal.cs
Copies all characters up to the first null character from an unmanaged ANSI or UTF-8 string to a managed String, and widens each character to 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
Parameters
- ptr
-
IntPtr
nativeint
The address of the first character of the unmanaged string.
Returns
A managed string that holds a copy of the unmanaged string. If ptr
is null
, the method returns a null string.
- Attributes
Examples
The following example uses the PtrToStringAnsi method to create a managed string from an unmanaged char
array.
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);
}
Remarks
PtrToStringAnsi is useful for custom marshaling or when mixing managed and unmanaged code. Because this method creates a copy of the unmanaged string's contents, you must free the original string as appropriate. This method provides the opposite functionality of the Marshal.StringToCoTaskMemAnsi and Marshal.StringToHGlobalAnsi methods.
See also
Applies to
PtrToStringAnsi(IntPtr, Int32)
- Source:
- Marshal.cs
- Source:
- Marshal.cs
- Source:
- Marshal.cs
Allocates a managed String, copies a specified number of characters from an unmanaged ANSI or UTF-8 string into it, and widens each character to 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
Parameters
- ptr
-
IntPtr
nativeint
The address of the first character of the unmanaged string.
- len
- Int32
The byte count of the input string to copy.
Returns
A managed string that holds a copy of the native string if the value of the ptr
parameter is not null
; otherwise, this method returns null
.
- Attributes
Exceptions
len
is less than zero.
Examples
The following example uses the PtrToStringAnsi method to create a managed string from an unmanagedchar
array.
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);
}
Remarks
PtrToStringAnsi is useful for custom marshaling or when mixing managed and unmanaged code. Because this method creates a copy of the unmanaged string's contents, you must free the original string as appropriate. This method provides the opposite functionality of the Marshal.StringToCoTaskMemAnsi and Marshal.StringToHGlobalAnsi methods.