Muchas gracias gorystyle me sirvio de ayuda.Ahora os copio la solucion para pasar de System::String a std::String y a una cadena de caracteres por si a alguien le es util.
Código:
string os;
const char* chars = (const char*)
(Marshal::StringToHGlobalAnsi(VARIABLE EN SYS::STRING)).ToPointer();
os = chars;
Marshal::FreeHGlobal(IntPtr((void*)chars));
// os es nuestra nueva variable en std::string
// Canvio a char
string s(os);
char *h = strdup(s.c_str());
// h es nuestro std string convertido en cadena