主要内容

C矩阵API字符串处理函数

如何MATLAB表示MEX文件中的字符串

在C / C ++ MEX功能中,使用C矩阵API,MATLAB构建®字符向量是mxarray.类型的mxChar,使用与地区无关的数据表示(Unicode®编码)。MATLAB将c风格字符串表示为类型字符,并使用由用户区域设置指定的字符编码方案。

以下C矩阵API函数提供字符串处理功能,可帮助您使用MXArrays和C样式字符串。

  • mxCreateString——创建一个mxChar初始化为输入字符串的mxArray。

  • mxArrayToString-副本mxChar将mxArray转换为c风格字符串。万博1manbetx支持多字节编码字符。

  • mxGetString-副本mxChar将mxArray转换为c风格字符串。最适用于单字节编码字符。万博1manbetx当您计算字符串缓冲区大小时,支持多字节编码字符。

  • mxgetchars.-返回指向第一个的指针mxChar元素。

选择字符串处理功能时考虑以下主题。

字符编码和多字节编码方案

MATLAB支万博1manbetx持由用户区域设置指定的字符编码方案。当MX Library函数转换时mxChar数据到C字符类型,MATLAB还将字符转换为用户默认编码。

如果使用多字节编码方案,请使用mxArrayToString函数。

mxgetchars.函数提供指向mxChar数组;它不会改变字符编码。

你也可以用themxGetString功能与多字节编码方案。mxGetString转换mxChar将数据转换为用户默认编码,并将转换后的字符复制到目标缓冲区。但是,必须计算目标缓冲区的大小。对于单字节编码,缓冲区的大小是字符数,加上1为空结束符。对于多字节编码,一个字符的大小是一个或多个字节。计算缓冲区大小的一些选项是高估数量(计算字符数乘以编码方案使用的最大字节数),分析字符串以确定每个字符使用的精确大小,或者利用第三方字符串缓冲库。在这个计算之后,添加1为空结束符。

转换MATLAB字符向量到c风格字符串

当您将字符数组传递给MEX函数时,它是一个mxarray.类型的mxChar.如果调用C函数来操作字符串,首先将数据转换为C类型字符使用mxArrayToString或者mxGetString职能。

将c风格字符串转换为MATLAB特征向量

如果您的MEX文件创建C字符串并将数据返回到MATLAB,请使用mxCreateString函数将C字符串复制到mxChar数组中。

返回修改后的输入字符串

假设MEX文件接受字符输入,修改它,并返回结果。由于MEX文件输入参数(prhs数组)是只读的,则必须定义单独的输出参数来处理修改后的字符串。

内存管理

MathWorks®建议MEX文件函数销毁它们自己的临时数组并释放它们自己动态分配的内存。用来释放内存的函数取决于如何使用字符串缓冲区以及使用什么函数创建缓冲区。

如果你调用这个函数

使用该函数释放内存

这里列出的任何字符串函数

不要破坏mxarray.在源MEX文件中:

  • 传递给右边列表中的MEX文件prhs []

  • 在左侧列表中返回plhs []

  • 返回的mexGetVariablePtr函数。

  • 用于创建一个结构。

mxArrayToString

mxFree

mxGetString

当使用mxCalloc/mxmalloc./mxRealloc要创建输入参数缓冲区,叫mxfree(buf)

mxCreateString

mxDestroyArray

mxgetchars.

一个也没有。函数创建指向对象的指针mxarray.但不分配额外的内存。

相关话题