Marshal.PtrToStringAnsi Méthode

Définition

Alloue un objet String managé et y copie la totalité ou une partie d’une chaîne ANSI (sur Windows) ou UTF-8 (sur UNIX) non managée.

Surcharges

PtrToStringAnsi(IntPtr)

Copie tous les caractères jusqu’au premier caractère NULL d’une chaîne ANSI ou UTF-8 non managée dans un objet String managé et élargit chaque caractère au format UTF-16.

PtrToStringAnsi(IntPtr, Int32)

Alloue un objet String managé, y copie un nombre spécifié de caractères d'une chaîne ANSI ou UTF-8 non managée et élargit chaque caractère au format UTF-16.

PtrToStringAnsi(IntPtr)

Source:
Marshal.cs
Source:
Marshal.cs
Source:
Marshal.cs

Copie tous les caractères jusqu’au premier caractère NULL d’une chaîne ANSI ou UTF-8 non managée dans un objet String managé et élargit chaque caractère au format UTF-16.

C#
[System.Security.SecurityCritical]
public static string PtrToStringAnsi (IntPtr ptr);
C#
public static string? PtrToStringAnsi (IntPtr ptr);
C#
public static string PtrToStringAnsi (IntPtr ptr);

Paramètres

ptr
IntPtr

Adresse du premier caractère de la chaîne non managée.

Retours

Chaîne managée qui contient une copie de la chaîne non managée. Si ptr est null, la méthode retourne une chaîne vide.

Attributs

Exemples

L’exemple suivant utilise la PtrToStringAnsi méthode pour créer une chaîne managée à partir d’un tableau non managé char .

C++
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);
}

Remarques

PtrToStringAnsi est utile pour le marshaling personnalisé ou lors du mélange de code managé et non managé. Étant donné que cette méthode crée une copie du contenu de la chaîne non managée, vous devez libérer la chaîne d’origine comme il convient. Cette méthode fournit les fonctionnalités opposées aux Marshal.StringToCoTaskMemAnsi méthodes et Marshal.StringToHGlobalAnsi .

Voir aussi

S’applique à

.NET 9 et autres versions
Produit Versions
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0

PtrToStringAnsi(IntPtr, Int32)

Source:
Marshal.cs
Source:
Marshal.cs
Source:
Marshal.cs

Alloue un objet String managé, y copie un nombre spécifié de caractères d'une chaîne ANSI ou UTF-8 non managée et élargit chaque caractère au format UTF-16.

C#
[System.Security.SecurityCritical]
public static string PtrToStringAnsi (IntPtr ptr, int len);
C#
public static string PtrToStringAnsi (IntPtr ptr, int len);

Paramètres

ptr
IntPtr

Adresse du premier caractère de la chaîne non managée.

len
Int32

Nombre d'octets de la chaîne d'entrée à copier.

Retours

Chaîne managée qui contient une copie de la chaîne native si la valeur du paramètre ptr n'est pas null ; sinon, cette méthode retourne null.

Attributs

Exceptions

len est inférieur à zéro.

Exemples

L’exemple suivant utilise la PtrToStringAnsi méthode pour créer une chaîne managée à partir d’un tableau non managéchar .

C++
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);
}

Remarques

PtrToStringAnsi est utile pour le marshaling personnalisé ou lors du mélange de code managé et non managé. Étant donné que cette méthode crée une copie du contenu de la chaîne non managée, vous devez libérer la chaîne d’origine comme il convient. Cette méthode fournit les fonctionnalités opposées aux Marshal.StringToCoTaskMemAnsi méthodes et Marshal.StringToHGlobalAnsi .

Voir aussi

S’applique à

.NET 9 et autres versions
Produit Versions
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0