在vc++中将'System::String ^'转换为'const char *'

6

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

我的代码:

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 *'

请帮帮我。


可能是重复的问题:如何将System::String^转换为const char*? - shf301
可能是如何将System :: String转换为const char *?的重复问题。 - Ben Voigt
2个回答

12

就像这样:如何在Visual C++中将System::String*转换为Char*

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

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接