码迷,mamicode.com
首页 > 编程语言 > 详细

C++ 读取 MATLAB 的 .m 文件,并发送到 MATLAB 运行

时间:2019-12-09 11:57:29      阅读:181      评论:0      收藏:0      [点我收藏+]

标签:输入流   find   cto   ios   can   c_str   博客   ifstream   包括   

本代码是由「Microsoft Visual Studio 2015 Enterprise」编写。

想要了解更多 C++ 与 MATLAB 混合编程的知识,可以参考我的另一篇博客:C++ 与 MATLAB 混合编程总结

代码用到的头文件自己记得添加,包括 stringvector 等,这里只是主体代码。别忘了最主要的 engine.h

//打开MATLAB引擎
Engine *matlabEngine;    //定义MATLAB引擎指针
if (!(matlabEngine = engOpen(NULL)))    //测试是否启动Matlab引擎成功
{
    cout << "Can't start Matlab engine!" << endl;
    exit(1);
}


//读取文件中有效命令到"matlabCode",并发送到MATLAB
ifstream fin;
fin.open("voronoiData.m", ios_base::in);
string matlabCode;
string buf;
string zhuShi = "%";    //** 用于查找是否有注释
string::size_type index;

while (getline(fin, buf))
{
    if (buf.empty())    //跳过文件中的空行
    {
        fin.clear();
        buf.erase();    //遇到空行,输入流被阻断,需要重置,以便后续读取
    }
    else    //判断某行是否有注释,如果有,去掉注释内容
    {
        index = buf.find(zhuShi);    //查找该行是否有注释,依据MATLAB注释关键字"%"定位
        if (index == string::npos)
        {
            buf += ";";
            matlabCode += buf;
            buf.erase();
        }
        else
        {
            string temp(buf, 0, index);    //去掉注释内容
            buf.erase();
            temp += ";";
            matlabCode += temp;
        }
    }
}
engEvalString(matlabEngine, matlabCode.c_str());    //命令发送到MATLAB
fin.close();    //关闭文件

C++ 读取 MATLAB 的 .m 文件,并发送到 MATLAB 运行

标签:输入流   find   cto   ios   can   c_str   博客   ifstream   包括   

原文地址:https://www.cnblogs.com/sinicheveen/p/12009840.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!