Maison >développement back-end >C++ >Comment convertir efficacement entre System :: String et std :: string en C .NET ?

Comment convertir efficacement entre System :: String et std :: string en C .NET ?

Susan Sarandon
Susan Sarandonoriginal
2024-10-30 21:12:03752parcourir

How to Efficiently Convert Between System::String and std::string in C   .NET?

Utilisation de la classe Marshal pour convertir entre System::String et std::string

Traduction entre System::String en C .NET et std::string en C peut être une tâche courante. La classe marshal_context fournie par MS fournit un moyen propre et efficace d'y parvenir.

Syntaxe :

<code class="CPP">msclr::interop::marshal_context context;
std::string standardString = context.marshal_as<std::string>(managedString);</code>

Exemple :

<code class="CPP">#include "stdafx.h"
#include <string>

#include <msclr/marshal_cppstd.h>

using namespace System;

int main(array<System::String ^> ^args)
{
    System::String^ managedString = "test";

    msclr::interop::marshal_context context;
    std::string standardString = context.marshal_as<std::string>(managedString);

    return 0;
}</code>

Avantages :

  • La classe marshal_context offre une sécurité supplémentaire et une gestion des exceptions par rapport à la gestion manuelle de la mémoire.
  • La syntaxe est concise et simple à lire.

Conversions alternatives

L'article MSDN référencé par la réponse fournit également d'autres méthodes de conversion, telles que :

  • Utilisation des fonctions de marshalling COM Interop telles que SysStringToBSTR.
  • Utilisation de l'attribut MarshalAs avec les fonctions d'appel de la plateforme.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn