首頁 >後端開發 >C++ >如何在 C .NET 中有效率地在 System::String 和 std::string 之間進行轉換?

如何在 C .NET 中有效率地在 System::String 和 std::string 之間進行轉換?

Susan Sarandon
Susan Sarandon原創
2024-10-30 21:12:03752瀏覽

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

使用Marshal 類別在System::String 和std::string 之間進行轉換

在C .NET 中的System:: String 之間進行轉換C 中的std::string 是一項常見任務。 MS 提供的 marshal_context 類別提供了一種乾淨且有效率的方法來實現此目的。

語法:

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

範例:

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

優點:

  • 優點:

與手動記憶體管理相比,marshal_context 類別提供了額外的安全性和異常處理功能。 語法簡潔、簡單

    替代轉換
  • 答案引用的MSDN文章也提供了其他轉換方法,例如:
使用COM 互通編組函數,例如SysStringToBSTR。 將 MarshalAs 屬性與平台呼叫函數結合使用。

以上是如何在 C .NET 中有效率地在 System::String 和 std::string 之間進行轉換?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn