使用c++墨西哥人函数如何std:: string参数?
62(30天)
显示旧的评论
接受的答案
卡若拉Gurrath
2019年1月30日
昨天我得到了同样的问题,这是我发现的解决方案。也许这不是最好的方式std:: string但我找不到别的……
matlab代码:
cellArray {1} =“string1”;
cellArray {2} =“string2相等”;
myMexFunction (cellArray);
myMexFunction:
使用名称空间matlab:数据;
使用matlab:墨西哥人::ArgumentList;
类MexFunction:公共matlab::墨西哥人:函数
{
std::要查看< matlab::引擎::MATLABEngine > matlabPtr = getEngine ();
ArrayFactory工厂;
公众:
空白符()(ArgumentList输出,ArgumentList输入)
{
CellArray imageCell = std::移动(输入[0]);
TypedArrayRef < MATLABString > inArrayRef1 = imageCell [0];
std:: string string1 = std:: string (inArrayRef1 [0]);
TypedArrayRef < MATLABString > inArrayRef2 = imageCell [1];
std:: string string2相等= std:: string (inArrayRef2 [0]);
/ /做一些与string1和string2相等…
}
}
0评论
答案(1)
崔
2022年8月10日
编辑:崔
2022年8月10日
matlab代码
input1 =“string1”;
input2 =“string2相等”;
myMexFunction (input1 input2);
墨西哥人c++代码
使用名称空间matlab:数据;
使用matlab:墨西哥人::ArgumentList;
类MexFunction:公共matlab::墨西哥人:函数
{
std::要查看< matlab::引擎::MATLABEngine > matlabPtr = getEngine ();
ArrayFactory工厂;
公众:
空白符()(ArgumentList输出,ArgumentList输入)
{
std:: string string1 = std:: string(输入[0][0]);
std:: string string2相等= std:: string(输入[1][0]);
/ /或使用以下代码
/ / std:: string string1 =
/ / matlab::引擎::convertUTF16StringToUTF8String(输入[0][0]);
/ / std:: string string2相等=
/ / matlab::引擎::convertUTF16StringToUTF8String(输入[1][0]);
/ /做一些与string1和string2相等…
}
}
在matlab input1/2参数是一个字符串标量,但它也代表1×1弦矩阵,
直接指定分类指数[0][0]在c++中。
顺便说一句,防止matlab崩溃错误的输入,最好有一个check-uphad
如果(输入[0]. gettype () ! = matlab::数据::ArrayType:: MATLAB_STRING) {
matlabPtr - >函数宏指令(u“错误”,
0,std::向量< matlab::数据::数组> ({factory.createScalar (“第一个输入必须字符串标量”}));
}