Heim >Backend-Entwicklung >C++ >Wie konvertiere ich einen System::String in einen std::string in C .NET?

Wie konvertiere ich einen System::String in einen std::string in C .NET?

Barbara Streisand
Barbara StreisandOriginal
2024-11-03 00:57:30506Durchsuche

How do I convert a System::String to a std::string in C   .NET?

Konvertieren von System::String in std::string in C .NET

Konvertieren eines System::String in C .NET Ein std::string kann mithilfe der Marshalling-Funktion des Microsoft .NET Framework erreicht werden.

Um einen System::String in einen std::string zu konvertieren, können Sie die von msclr bereitgestellte Methode Marshal_as verwenden ::interop::marshal_context-Klasse. Diese Methode verwendet die verwaltete Zeichenfolge als Eingabe und gibt die entsprechende Standardzeichenfolge zurück.

Hier ist ein Beispiel für die Konvertierung eines System::String in einen std::string:

<code class="cpp">#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>

Dies Das Code-Snippet importiert die erforderlichen Header, deklariert eine verwaltete Zeichenfolge und konvertiert dann die verwaltete Zeichenfolge mithilfe der Methode „marshal_as“ in eine Standardzeichenfolge.

Es ist wichtig zu beachten, dass der Namespace „msclr::interop“ nur in „Recent“ verfügbar ist Versionen von .NET. Wenn Sie eine ältere Version verwenden, können Sie stattdessen die Methode msclr::interop::marshal_as_string verwenden.

Weitere Informationen zum Konvertieren verschiedener anderer Typen zwischen verwaltetem und nicht verwaltetem Code finden Sie im folgenden MSDN-Artikel: https://docs.microsoft.com/en-us/dotnet/framework/unmanaged-api/interop/marshaling-data-with-platform-invoke

Das obige ist der detaillierte Inhalt vonWie konvertiere ich einen System::String in einen 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