2011-10-06 46 views
6

如何在vC++中将'System :: String ^'转换为'const char *'?在vC++中将'System :: String ^'转换为'const char *'

我的代码:

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

IplImage *img1 = cvLoadImage(Result1, 1);

,如果我不喜欢它上面将产生以下错误。

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

请帮助我。

+0

可能重复的[如何将System :: String ^转换为const char *?](http://stackoverflow.com/questions/1098431/how-do-i-convert-a-systemstring -to-const-char) – shf301

+0

[如何将System :: String转换为const char * *]可能的重复(http://stackoverflow.com/questions/29335426/how-to-convert-systemstring-to-const -char) –

回答

3

这是为我工作。

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

是这样的: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 
相关问题