おもしれーっ♪
C++/CLIでnativeとmanagedを行ったりきたりするとき、
欠かせないのがString^ と char*/wchar_t*/std::stirng/std::wstring の相互変換。
それをマーシャリング・ライブラリがさっくし解決してくれやんす。
#include <msclr/marshal.h> // char*, wchar_t*
#include <msclr/marshal_windows.h> // BSTR
#include <msclr/marshal_cppstd.h> // std::string, std::wstring
String^ s = "alphabetやカタカナ漢字を含む文字列";
msclr::interop::marshal_context ctx;
const char* s2 = ctx.marshal_as<const char*>(s);
String^ s3 = ctx.marshal_as<String^>(s2);
std::string s4 = ctx.marshal_as<std::string>(s);
std::wstring s5 = ctx.marshal_as<std::wstring>(s);
// などなど
ライブラリの腹かっさばいて覗いてみましたら、
MultiByteToWideCharの類を呼んでました。
# でしょーともでしょーとも。