Marshal.PtrToStringAnsi Marshal.PtrToStringAnsi Marshal.PtrToStringAnsi Marshal.PtrToStringAnsi Method

Definition

Allocates a managed String and copies all or part of an unmanaged ANSI string into it.

Overloads

PtrToStringAnsi(IntPtr) PtrToStringAnsi(IntPtr) PtrToStringAnsi(IntPtr) PtrToStringAnsi(IntPtr)

Copies all characters up to the first null character from an unmanaged ANSI string to a managed String, and widens each ANSI character to Unicode.

PtrToStringAnsi(IntPtr, Int32) PtrToStringAnsi(IntPtr, Int32) PtrToStringAnsi(IntPtr, Int32) PtrToStringAnsi(IntPtr, Int32)

Allocates a managed String, copies a specified number of characters from an unmanaged ANSI string into it, and widens each ANSI character to Unicode.

PtrToStringAnsi(IntPtr) PtrToStringAnsi(IntPtr) PtrToStringAnsi(IntPtr) PtrToStringAnsi(IntPtr)

Copies all characters up to the first null character from an unmanaged ANSI string to a managed String, and widens each ANSI character to Unicode.

public:
 static System::String ^ PtrToStringAnsi(IntPtr ptr);
[System.Security.SecurityCritical]
public static string PtrToStringAnsi (IntPtr ptr);
static member PtrToStringAnsi : nativeint -> string
Public Shared Function PtrToStringAnsi (ptr As IntPtr) As String

Parameters

ptr
IntPtr IntPtr IntPtr IntPtr

The address of the first character of the unmanaged string.

Returns

A managed string that holds a copy of the unmanaged ANSI string. If ptr is null, the method returns a null string.

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.

Security

SecurityCriticalAttribute
requires full trust for the immediate caller. This member cannot be used by partially trusted or transparent code.

See also

PtrToStringAnsi(IntPtr, Int32) PtrToStringAnsi(IntPtr, Int32) PtrToStringAnsi(IntPtr, Int32) PtrToStringAnsi(IntPtr, Int32)

Allocates a managed String, copies a specified number of characters from an unmanaged ANSI string into it, and widens each ANSI character to Unicode.

public:
 static System::String ^ PtrToStringAnsi(IntPtr ptr, int len);
[System.Security.SecurityCritical]
public static string PtrToStringAnsi (IntPtr ptr, int len);
static member PtrToStringAnsi : nativeint * int -> string
Public Shared Function PtrToStringAnsi (ptr As IntPtr, len As Integer) As String

Parameters

ptr
IntPtr IntPtr IntPtr IntPtr

The address of the first character of the unmanaged string.

len
Int32 Int32 Int32 Int32

The byte count of the input string to copy.

Returns

A managed string that holds a copy of the native ANSI string if the value of the ptr parameter is not null; otherwise, this method returns null.

Exceptions

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.

Security

SecurityCriticalAttribute
requires full trust for the immediate caller. This member cannot be used by partially trusted or transparent code.

See also

Applies to