System::StringはUNICODEです。C#ではなくわざわざManaged C++を使っているのですから、char *に変換できないことには魅力がありません。 PtrToStrintAnsiとかそれっぽい関数がありますが、wcharに変換されたりして微妙に使えません。 正解はMarshal::StringToHGlobalAnsiです。 CStrings::CStrings(class System::String __gc *str) { using namespace System::Runtime::InteropServices; const char* chars = (const char*)(Marshal::StringToHGlobalAnsi(str)).ToPointer(); assign(chars); Marshal::FreeHGlobal(Syst