C++ 读取 MATLAB 的 .m 文件,并发送到 MATLAB 运行
本代码是由「Microsoft Visual Studio 2015 Enterprise」编写。
想要了解更多 C++ 与 MATLAB 混合编程的知识,可以参考我的另一篇博客:C++ 与 MATLAB 混合编程总结
代码用到的头文件自己记得添加,包括 string
、vector
等,这里只是主体代码。别忘了最主要的 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(); //关闭文件