需要将String ^转换为char *

前端之家收集整理的这篇文章主要介绍了需要将String ^转换为char *前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我使用.NET DateTime来获取当前的日期和时间.我将其转换为一个字符串以用作文件名的一部分.问题是OpenCV命令保存一个图像需要一个char *不是一个字符串类型,而DateTime只会输出一个String ^类型.我该如何使这项工作?代码未完成
  1. String^ nowString = DateTime::Now.ToString("yyyy-MM-dd-HH:mm");
  2. IplImage* toSave;
  3. CvCapture* capture = cvCreateCameraCapture(0);
  4. toSave = cvQueryFrame( capture );
  5. cvSaveImage(nowString,toSave);
  6. cvReleaseImage(&toSave);
  7. cvReleaseCapture(&capture);

解决方法

你最好的办法是使用StringToHGlobalAnsi.这里是完整的代码,显示它的完成和记忆释放分配的内存.
  1. using namespace System::Runtime::InteropServices;
  2.  
  3. void MethodName()
  4. {
  5. String^ nowString = DateTime::Now.ToString("yyyy-MM-dd-HH:mm");
  6. IntPtr ptrToNativeString = Marshal::StringToHGlobalAnsi(nowString);
  7. try
  8. {
  9. CvCapture* capture = cvCreateCameraCapture(0);
  10. IplImage* toSave = cvQueryFrame(capture);
  11. cvSaveImage(static_cast<char*>(ptrToNativeString.ToPointer()),toSave);
  12. cvReleaseImage(&toSave);
  13. cvReleaseCapture(&capture);
  14. }
  15. catch (...)
  16. {
  17. Marshal::FreeHGlobal(ptrToNativeString);
  18. throw;
  19. }
  20. Marshal::FreeHGlobal(ptrToNativeString);
  21. }

你可能想重新考虑使用文件名中的“:”字符,因为我不相信Windows非常喜欢这样.

猜你在找的C&C++相关文章