Marshal.PtrToStringAnsi 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
分配托管 String,并向其复制所有或部分非托管 ANSI(适用于 Windows)或 UTF-8(适用于 Unix)字符串。
重载
PtrToStringAnsi(IntPtr) |
将非托管 ANSI 或 UTF-8 字符串中第一个空字符之前的所有字符复制到托管 String,并将每个字符扩展为 UTF-16 字符。 |
PtrToStringAnsi(IntPtr, Int32) |
分配托管 String,然后从非托管 ANSI 或 UTF-8 字符串向其复制指定数目的字符,并将每个字符扩展为 UTF-16 字符。 |
PtrToStringAnsi(IntPtr)
- Source:
- Marshal.cs
- Source:
- Marshal.cs
- Source:
- Marshal.cs
将非托管 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.StringToHGlobalAnsi 方法的Marshal.StringToCoTaskMemAnsi相反功能。
另请参阅
适用于
PtrToStringAnsi(IntPtr, Int32)
- Source:
- Marshal.cs
- Source:
- Marshal.cs
- Source:
- 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.StringToHGlobalAnsi 方法的Marshal.StringToCoTaskMemAnsi相反功能。