| 外部インタフェース/API リファレンス | ![]() |
C 言語表示
#include "matrix.h" int mxGetString(const mxArray *array_ptr, char *buf, int buflen);
引数
array_ptr
文字列のmxArrayのポインタ。つまり、クラスがmxCHAR_CLASSであるmxArrayのポインタ。
buf
mxGetStringは、キャラクタデータをbufに書き出し、(Cの文字列の方法で)NULLキャラクタを使って文字列を終了させます。bufのポインタは、ダイナミックとスタティックメモリの両方に対応します。
buflen
bufに読み込まれるキャラクタの最大数。一般的に、(array_ptrのポインタが指す文字列mxArrayの要素数)+1にbuflenを設定します。要素数の取得方法は、mxGetMとmxGetNのリファレンスページを参照してください。
注意
マルチバイトキャラクタセットのユーザは、MATLABはマルチバイトキャラクタをmxChar(16ビット符号なし整数)にパックすることを知っている必要があります。出力文字列に対する領域を割り当てるときに、打ち切りを避けるためにつぎのように設定してください。 buflen = (mxGetM(prhs[0] * mxGetN(prhs[0]) * sizeof(mxChar)) + 1
|
戻り値
成功した場合は0、失敗した場合は1。考えられる失敗の原因は、以下の通りです。
mxArray を指定。array_ptrによって指し示されるmxArray全体を格納するために必要なキャラクタ数よりも小さいbuflenを指定。この原因である場合、1が出力され、文字列は打ち切られます。詳細
mxGetStringを呼び出すことによって、文字列のmxArrayのキャラクタデータをCスタイルの文字列にコピーします。コピーされたCスタイルの文字列は、bufから始まり、buflen-1個より少ないキャラクタを含みます。Cスタイルの文字列は、常にNULLキャラクタで終わります。
文字列配列が複数の行を含む場合は、一度に1列づつ、1つの長い文字列配列にコピーされます。
例題
examplesディレクトリのrefbookサブディレクトリのrevord.cを参照してください。
さらに、examplesディレクトリのmexサブディレクトリのexplore.cと、examplesディレクトリのmxサブディレクトリのmxmalloc.cとmxsetallocfcns.cを参照してください。
参考
mxCreateCharArray, mxCreateCharMatrixFromStrings, mxCreateString
| mxGetScalar | mxIsCell | ![]() |