Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Cekap Menukar Antara Sistem::String dan std::string dalam C .NET?

Bagaimana untuk Cekap Menukar Antara Sistem::String dan std::string dalam C .NET?

Susan Sarandon
Susan Sarandonasal
2024-10-30 21:12:03684semak imbas

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

Menggunakan Kelas Marshal untuk Menukar antara Sistem::String dan std::string

Menterjemah antara Sistem::String dalam C .NET dan std::string dalam C boleh menjadi tugas biasa. Kelas marshal_context yang disediakan oleh MS menyediakan cara yang bersih dan cekap untuk mencapainya.

Sintaks:

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

Contoh:

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

Faedah:

  • Kelas marshal_context menyediakan pengendalian keselamatan dan pengecualian tambahan berbanding pengurusan memori manual.
  • Sintaksnya ringkas dan mudah untuk dibaca.

Penukaran Alternatif

Artikel MSDN yang dirujuk oleh jawapan juga menyediakan kaedah penukaran lain, seperti:

  • Menggunakan fungsi marshalling interop COM seperti SysStringToBSTR.
  • Menggunakan atribut MarshalAs dengan fungsi panggilan platform.

Atas ialah kandungan terperinci Bagaimana untuk Cekap Menukar Antara Sistem::String dan std::string dalam C .NET?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn