需要将String ^转换为char *
发布时间:2020-12-16 02:59:38 所属栏目:百科 来源:网络整理
导读:我使用.NET DateTime来获取当前的日期和时间.我将其转换为一个字符串以用作文件名的一部分.问题是OpenCV命令保存一个图像需要一个char *不是一个字符串类型,而DateTime只会输出一个String ^类型.我该如何使这项工作?代码未完成 String^ nowString = DateTim
我使用.NET DateTime来获取当前的日期和时间.我将其转换为一个字符串以用作文件名的一部分.问题是OpenCV命令保存一个图像需要一个char *不是一个字符串类型,而DateTime只会输出一个String ^类型.我该如何使这项工作?代码未完成
String^ nowString = DateTime::Now.ToString("yyyy-MM-dd-HH:mm"); IplImage* toSave; CvCapture* capture = cvCreateCameraCapture(0); toSave = cvQueryFrame( capture ); cvSaveImage(nowString,toSave); cvReleaseImage(&toSave); cvReleaseCapture(&capture); 解决方法
你最好的办法是使用StringToHGlobalAnsi.这里是完整的代码,显示它的完成和记忆释放分配的内存.
using namespace System::Runtime::InteropServices; void MethodName() { String^ nowString = DateTime::Now.ToString("yyyy-MM-dd-HH:mm"); IntPtr ptrToNativeString = Marshal::StringToHGlobalAnsi(nowString); try { CvCapture* capture = cvCreateCameraCapture(0); IplImage* toSave = cvQueryFrame(capture); cvSaveImage(static_cast<char*>(ptrToNativeString.ToPointer()),toSave); cvReleaseImage(&toSave); cvReleaseCapture(&capture); } catch (...) { Marshal::FreeHGlobal(ptrToNativeString); throw; } Marshal::FreeHGlobal(ptrToNativeString); } 你可能想重新考虑使用文件名中的“:”字符,因为我不相信Windows非常喜欢这样. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |