Marshal::PtrToStringAnsi Method (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.

Namespace:   System.Runtime.InteropServices
Assembly:  mscorlib (in mscorlib.dll)

public:
[SecurityCriticalAttribute]
static String^ PtrToStringAnsi(
	IntPtr ptr
)

Parameters

ptr
Type: System::IntPtr

The address of the first character of the unmanaged string.

Return Value

Type: System::String^

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

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.

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);
}

SecurityCriticalAttribute

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

Universal Windows Platform
Available since 8
.NET Framework
Available since 1.1
Portable Class Library
Supported in: portable .NET platforms
Silverlight
Available since 2.0
Windows Phone Silverlight
Available since 8.0
Windows Phone
Available since 8.1
Return to top
Show: