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

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

Susan Sarandon
發布: 2024-10-30 21:12:03
原創
756 人瀏覽過

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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板