how to convert from managed string to char* in c++\clr ?

how to  convert from managed string to char* in c++\clr ?
here is my try below:
but it returns an error:
error C2682: cannot use 'safe_cast' to convert from ' System::String ^ '  to ' char * '

System::String^ s = "test";
	cascade_name = safe_cast<char*,System::String^>(s);
\\ Important note: cascade_name variable is a global variable which has type of char*
\\ from header file: char* cascade_name;

Open in new window

Who is Participating?
jkrConnect With a Mentor Commented:
Take a look at ("How to convert from System::String* to Char* in Visual C++ ") whichalso covers your problem (scroll down for the full code):
		     System::String ^ str = "Hello world\n";
	     //method 1
	     pin_ptr<const wchar_t> str1 = PtrToStringChars(str);
	     //method 2
	     char* str2 = (char*)Marshal::StringToHGlobalAnsi(str).ToPointer();
	     //method 3
	     CString str3(str); 
     	//method 4
#if _MSC_VER > 1499 // Visual C++ 2008 only
	     marshal_context ^ context = gcnew marshal_context();
	     const char* str4 = context->marshal_as<const char*>(str);
	     delete context;

Open in new window

mayank13Connect With a Mentor Commented:
Let say we have :

string s1 = "abcd";

char *c1;

Now to convert string to char just use strcpy() having ->

strcpy( c1, s1.c_str());

Note: s1.c_str(), tell compiler to read string as char* string.

Ameerh24Author Commented:
thanks, the solution woks fine
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.