Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimanakah cara saya menukar System::String kepada std::string dalam C .NET?

Bagaimanakah cara saya menukar System::String kepada std::string dalam C .NET?

Barbara Streisand
Barbara Streisandasal
2024-11-03 00:57:30461semak imbas

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

Menukar Sistem::String kepada std::string dalam C .NET

Dalam C .NET, menukarkan Sistem::String kepada std::string boleh dicapai menggunakan ciri marshaling yang disediakan oleh Microsoft .NET Framework.

Untuk menukar System::String kepada std::string, anda boleh menggunakan kaedah marshal_as yang disediakan oleh msclr ::interop::marshal_context kelas. Kaedah ini mengambil rentetan terurus sebagai input dan mengembalikan rentetan standard yang sepadan.

Berikut ialah contoh cara menukar System::String kepada 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>

Ini coretan kod mengimport pengepala yang diperlukan, mengisytiharkan rentetan terurus dan kemudian menggunakan kaedah marshal_as untuk menukar rentetan terurus kepada rentetan standard.

Adalah penting untuk ambil perhatian bahawa ruang nama msclr::interop hanya tersedia dalam kebelakangan ini versi .NET. Jika anda menggunakan versi yang lebih lama, anda boleh menggunakan kaedah msclr::interop::marshal_as_string sebagai gantinya.

Untuk mendapatkan maklumat lanjut tentang menukar pelbagai jenis lain antara kod terurus dan tidak terurus, rujuk artikel MSDN berikut: https://docs.microsoft.com/en-us/dotnet/framework/unmanaged-api/interop/marshaling-data-with-platform-invoke

Atas ialah kandungan terperinci Bagaimanakah cara saya menukar System::String kepada 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