次の方法で共有


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)

ソース:
Marshal.cs
ソース:
Marshal.cs
ソース:
Marshal.cs

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

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

戻り値

アンマネージド文字列のコピーを保持するマネージド文字列。 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)

ソース:
Marshal.cs
ソース:
Marshal.cs
ソース:
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 が 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機能を提供します。

こちらもご覧ください

適用対象