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!