当前位置: 首页 > 编程笔记 >

MATLAB输入字符串,在C中进行修改,然后输出

严誉
2023-03-14
本文向大家介绍MATLAB输入字符串,在C中进行修改,然后输出,包括了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
           

 类似资料:
  • 嗨,我的代码有一些问题,我需要接受一个3行的输入,并计算输入中“$”的数量。输入方法未注释为“scanf(”%[]s“,&userinput);”是唯一一个我发现采取所有3行输入,但我不能打破输入循环继续我的程序。 任何帮助都将不胜感激

  • 《 C++ cout.put()》一节中,讲解了 ostream 类提供的 put() 成员方法的用法,其用于向输出流缓冲区中添加要输出的单个字符。而在某些场景中,我们还需要输出指定的字符串,这时可以使用 ostream 类提供的 write() 成员方法。 write() 成员方法专用于向输出流缓冲区中添加指定的字符串,初学者可以简单的理解为输出指定的字符串。其语法格式如下: ostream&w

  • 主要内容:字符串的输出,字符串的输入其实在《 C语言输入输出》一章中我们已经提到了如何输入输出字符串,但是那个时候我们还没有讲解字符串,大家理解的可能不透彻,所以本节我们有必要再深入和细化一下。 字符串的输出 在C语言中,有两个函数可以在控制台(显示器)上输出字符串,它们分别是: puts():输出字符串并自动换行,该函数只能输出字符串。 printf():通过格式控制符输出字符串,不能自动换行。除了字符串,printf() 还能输

  • 在高版本浏览器和 node.js 中,JavaScript 提供了 ArrayBuffer 和 Uint8Array 等 TypedArray 可以对二进制数据进行操作。但在低版本浏览器中并没有这些对象,而且这些对象没有自动伸缩性,不方便流式操作,相互转换也比较麻烦。 为兼容低版本浏览器,并且可以方便操作字符串和二进制数据,hprose for JavaScript 提供了一个 StringIO

  • 本文向大家介绍C++ 修改字符串文字,包括了C++ 修改字符串文字的使用技巧和注意事项,需要的朋友参考一下 示例 C ++ 11 "hello world" 是字符串文字,因此对其进行修改会产生未定义的行为。 str上面示例中的初始化在C ++ 03中已正式弃用(计划从该标准的将来版本中删除)。2003年之前,许多编译器可能对此发出警告(例如,可疑转换)。2003年之后,编译器通常会警告不要使用转

  • 问题内容: 我在JSF支持bean中具有以下方法: 我在数据表中显示此: 但是我得到以下异常: 它是怎么引起的,我该如何解决?\ 问题答案: 所以, 导致此: 您是否正在运行您认为正在运行的代码?的参与在堆栈跟踪指示是 实际上 像一个数组。数组值只能通过像整数索引来获得,但你用字符串访问它作为导致了这一例外。 确保返回,而不是,并且已将的正确版本声明为托管Bean。