Heim > Backend-Entwicklung > C++ > Wie konvertiert man effizient zwischen System::String und std::string in C .NET?

Wie konvertiert man effizient zwischen System::String und std::string in C .NET?

Susan Sarandon
Freigeben: 2024-10-30 21:12:03
Original
783 Leute haben es durchsucht

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

Verwenden der Marshal-Klasse zum Konvertieren zwischen System::String und std::string

Übersetzen zwischen System::String in C .NET und std::string in C können eine häufige Aufgabe sein. Die von MS bereitgestellte Klasse „marshal_context“ bietet eine saubere und effiziente Möglichkeit, dies zu erreichen.

Syntax:

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

Beispiel:

<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>
Nach dem Login kopieren

Vorteile:

  • Die Klasse „marshal_context“ bietet zusätzliche Sicherheit und Ausnahmebehandlung im Vergleich zur manuellen Speicherverwaltung.
  • Die Syntax ist prägnant und einfach zum Lesen.

Alternative Konvertierungen

Der MSDN-Artikel, auf den in der Antwort verwiesen wird, bietet auch andere Konvertierungsmethoden, wie zum Beispiel:

  • Verwendung von COM-Interop-Marshalling-Funktionen wie SysStringToBSTR.
  • Verwendung des MarshalAs-Attributs mit Plattformaufruffunktionen.

Das obige ist der detaillierte Inhalt vonWie konvertiert man effizient zwischen System::String und std::string in C .NET?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage