转换 'System::String ^'到“const char *”在vc中++

发布于 2024-12-08 10:40:18 字数 338 浏览 1 评论 0原文

如何在 vc++ 中将“System::String ^”转换为“const char *”?

我的代码:

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

IplImage *img1 = cvLoadImage(Result1, 1);

如果我这样做像上面一样,它会产生以下错误。

错误 C2664:“cvLoadImage”:无法将参数 1 从“System::String ^”转换为“const char *”

请帮助我。

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

My code:

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

IplImage *img1 = cvLoadImage(Result1, 1);

if I do like above it will generate following error.

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

Please help me.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

冬天旳寂寞 2024-12-15 10:40:18

就像这样:如何在 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

It's like this: 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
绿萝 2024-12-15 10:40:18

这对我来说是工作。

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

This is work 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));
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文