ホームページ  >  記事  >  バックエンド開発  >  C .NET で System::String と std::string の間を効率的に変換するにはどうすればよいですか?

C .NET で System::String と std::string の間を効率的に変換するにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-10-30 21:12:03684ブラウズ

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

マーシャル クラスを使用した 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 記事には、次のような他の変換方法も提供されています。

  • SysStringToBSTR などの COM 相互運用マーシャリング関数を使用します。
  • プラットフォーム呼び出し関数で MarshalAs 属性を使用します。

以上がC .NET で System::String と std::string の間を効率的に変換するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。