Convert 'System :: String ^' to 'const char *' in vC ++

How can I convert 'System :: String ^' to 'const char *' in vC ++?

My code is:

String ^Result1= "C:/Users/Dev/Desktop/imag.jpg";

IplImage *img1 = cvLoadImage(Result1, 1);

if I do this above, it will generate the following error.

error C2664: 'cvLoadImage' : cannot convert parameter 1 from 'System::String ^' to 'const char *'

Please help me.

+6
source share
2 answers

This is a job for me.

 void MarshalString ( String ^ s, string& os ) { using namespace Runtime::InteropServices; const char* chars = (const char*)(Marshal::StringToHGlobalAnsi(s)).ToPointer(); os = chars; Marshal::FreeHGlobal(IntPtr((void*)chars)); } 
+3
source

Here's how: How to convert from System :: String * to Char * in Visual C ++

 System::String ^ str = "Hello world\n"; //method 1 pin_ptr<const wchar_t> str1 = PtrToStringChars(str); wprintf(str1); //method 2 char* str2 = (char*)Marshal::StringToHGlobalAnsi(str).ToPointer(); printf(str2); Marshal::FreeHGlobal((IntPtr)str2); //method 3 CString str3(str); wprintf(str3); //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); puts(str4); delete context; #endif 
+12
source

Source: https://habr.com/ru/post/898727/


All Articles