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
Libérer: 2024-10-30 21:12:03
original
750 Les gens l'ont consulté

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>
Copier après la connexion

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>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal