微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

需要将String ^转换为char *

我使用.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非常喜欢这样.

原文地址:https://www.jb51.cc/c/112779.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐