Heim  >  Artikel  >  Backend-Entwicklung  >  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
Susan SarandonOriginal
2024-10-30 21:12:03684Durchsuche

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>

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>

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!

Stellungnahme:
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