MATLAB输入字符串,在C中进行修改,然后输出
示例
在此示例中,我们说明了MATLAB MEX中的字符串操作。我们将创建一个MEX函数,该函数接受来自MATLAB的字符串作为输入,将数据复制到C字符串中,对其进行修改,然后将其转换回mxArrayMATLAB端。
此示例的主要目的是说明如何将字符串从MATLAB转换为C / C ++,反之亦然。
stringIO.cpp
#include "mex.h"#include <cstring>
void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[])
{
// 检查参数数量
if (nrhs != 1 || nlhs > 1) {
mexErrMsgIdAndTxt("StringIO:WrongNumArgs", "参数数量错误。");
}
// 检查输入是否为字符串
if (mxIsChar(prhs[0])) {
mexErrMsgIdAndTxt("StringIO:TypeError", "Input is not a string");
}
// 将字符数据从mxArray复制到C样式的字符串(以Null结尾)
char *str = mxArrayToString(prhs[0]);
// 以某种方式操作字符串
if (strcmp("theOneString", str) == 0) {
str[0] = 'T'; // 大写第一个字母
} else {
str[0] = ' '; // 还有其他事吗
}
// 返回新的修改后的字符串
plhs[0] = mxCreateString(str);
// 空闲分配的内存
mxFree(str);
}
此示例中的相关功能为:
mxIsChar测试anmxArray是否为mxCHAR类型。
mxArrayToString将mxArray字符串的数据复制到char *缓冲区。
mxCreateString从创建一个mxArray字符串char*。
附带说明一下,如果您只想读取字符串,而不要修改它,请记住将其声明为const char*具有速度和鲁棒性。
最后,编译后,我们可以从MATLAB中调用它:
>> mex stringIO.cpp>> strOut = stringIO('theOneString')
strOut =
TheOneString
>> strOut = stringIO('somethingelse')
strOut=
omethingelse
以上是 MATLAB输入字符串,在C中进行修改,然后输出 的全部内容, 来源链接: utcz.com/z/321354.html