Code/C C++

[C++/CLI] Marshalling : System::String^ <-> const char*

Hide Code 2010. 5. 17. 16:33

#include <stdio.h>
#include <msclr/marshal.h>

using namespace System;
using namespace msclr::interop;

int main(array<System::String ^> ^args)
{
    {
        // System::String^ to const char*
        marshal_context^ context = gcnew marshal_context();
        String^ message = gcnew String("System::String^ to const char*");
        const char* result = context->marshal_as<const char*>(message);
        puts(result);
        delete context;
    }

    {
        // const char* to System::String^
        const char* message = "const char* to System::String^";
        String^ result = marshal_as<String^>(message);
        Console::WriteLine(result);
    }

    return 0;
}