2011-10-06 31 views
6

Come posso convertire un 'System :: String ^' in 'const char *' in vC++?Convertire un 'System :: String ^' in 'const char *' in vC++

Il mio codice:

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

IplImage *img1 = cvLoadImage(Result1, 1);

se mi piace di sopra di essa genererà seguente errore.

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

Please help me.

+0

possibile duplicato di [Come faccio a convertire uno System :: String^a const char *?] (Http://stackoverflow.com/questions/1098431/how-do-i-convert-a-systemstring -to-const-char) – shf301

+0

possibile duplicato di [come convertire System :: String in const char \ *?] (http://stackoverflow.com/questions/29335426/how-to-convert-systemstring-to-const -char) –

risposta

3

Questo è un lavoro per 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)); 
} 
12

E 'in questo modo: 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 
Problemi correlati