Marshal::PtrToStringAnsi Method (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.
Assembly: mscorlib (in mscorlib.dll)
Parameters
- ptr
-
Type:
System::IntPtr
The address of the first character of the unmanaged string.
- len
-
Type:
System::Int32
The byte count of the input string to copy.
Return Value
Type: System::String^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.
| Exception | Condition |
|---|---|
| ArgumentException | len is less than zero. |
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 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); }
requires full trust for the immediate caller. This member cannot be used by partially trusted or transparent code.
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