Marshal.PtrToStringAnsi メソッド

定義

マネージド String を割り当て、アンマネージド ANSI (Windows の場合) または UTF-8 (Unix の場合) 文字列のすべてまたは一部をコピーします。

オーバーロード

PtrToStringAnsi(IntPtr)

アンマネージド ANSI または UTF-8 文字列から最初の null 文字に遭遇するまでのすべての文字をマネージド String にコピーし、各文字を UTF-16 に拡張します。

PtrToStringAnsi(IntPtr, Int32)

マネージド String を割り当て、アンマネージド ANSI または UTF-8 文字列から指定した文字数をコピーし、各文字を UTF-16 に拡張します。

PtrToStringAnsi(IntPtr)

アンマネージド ANSI または UTF-8 文字列から最初の null 文字に遭遇するまでのすべての文字をマネージド 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

アンマネージ文字列の最初の文字のアドレス。

戻り値

String

アンマネージド文字列のコピーを保持するマネージド文字列。 ptrnull の場合、このメソッドは 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)

マネージド 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

コピーする入力文字列のバイト数。

戻り値

String

ptr パラメーターの値が null でない場合は、ネイティブ文字列のコピーを保持するマネージド文字列。それ以外の場合、このメソッドは null を返します。

属性

例外

len が 0 未満です。

次の例では、このメソッドを 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提供します。

こちらもご覧ください

適用対象