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 제공합니다.

추가 정보

적용 대상