2011-10-06 17 views
6

Bir 'System :: String ^' öğesini vC++ 'da' const char * 'haline nasıl dönüştürebilirim?vC++ 'const char *' için bir 'System :: String ^' dönüştürün ++

Kodum:

IplImage *img1 = cvLoadImage(Result1, 1);

ben hata aşağıdaki üretecektir üstündeki gibi yaparsak

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

.

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

bana yardım edin.

+0

olası yinelenen ([Ben System :: String^const char *? Dönüştürmek nasıl] http://stackoverflow.com/questions/1098431/how-do-i-convert-a-systemstring -to-const-char) – shf301

+0

olası yinelenmesi [System :: String to const char \ * nasıl dönüştürülür?] (http://stackoverflow.com/questions/29335426/how-to-convert-systemstring-to-const -Char) –

cevap

3

Bu benim için bir iştir.

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)); 
} 
ait
12

Şöyle: 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 
İlgili konular