在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
为空结束符。
当您将字符数组传递给MEX函数时,它是一个mxarray.
类型的mxChar
.如果调用C函数来操作字符串,首先将数据转换为C类型字符
使用mxArrayToString
或者mxGetString
职能。
如果您的MEX文件创建C字符串并将数据返回到MATLAB,请使用mxCreateString
函数将C字符串复制到mxChar
数组中。
假设MEX文件接受字符输入,修改它,并返回结果。由于MEX文件输入参数(prhs
数组)是只读的,则必须定义单独的输出参数来处理修改后的字符串。
MathWorks®建议MEX文件函数销毁它们自己的临时数组并释放它们自己动态分配的内存。用来释放内存的函数取决于如何使用字符串缓冲区以及使用什么函数创建缓冲区。
如果你调用这个函数 |
使用该函数释放内存 |
---|---|
这里列出的任何字符串函数 |
不要破坏
|
|
|
|
当使用 |
|
|
|
一个也没有。函数创建指向对象的指针 |