В функциях MEX C/C++, созданных с Матричным API C, вектором символов MATLAB® является mxArray
из типа mxChar
, использование нейтрального в отношении локали представления данных (кодирование Unicode®). MATLAB представляет строки C-стиля как тип char
, и использует схему кодировки символов, заданную пользовательской установкой локали.
Следующие Матричные API-функции C обеспечивают функции обработки строки, чтобы помочь вам работать и с mxArrays и со строками C-стиля.
mxCreateString
— Создает mxChar
mxArray инициализируется к входной строке.
mxArrayToString
— Копирует mxChar
mxArray в строку C-стиля. Поддерживает многобайтовые закодированные символы.
mxGetString
— Копирует mxChar
mxArray в строку C-стиля. Лучше всего используемый с однобайтовыми закодированными символами. Поддерживает многобайтовые закодированные символы, когда вы вычисляете buffer size строки.
mxGetChars
— Возвращает указатель на первый mxChar
элемент в mxArray.
Рассмотрите следующие темы при выборе функции обработки строки.
MATLAB поддерживает схему кодировки символов, заданную пользовательской установкой локали. Когда Библиотечная функция MX преобразует mxChar
данные к char
C тип, MATLAB также преобразует символ в пользовательскую кодировку по умолчанию.
Если вы используете многобайтовую схему кодирования, используйте mxArrayToString
функция.
mxGetChars
функция обеспечивает указатель на mxChar
массив; это не изменяет кодировку символов.
Можно также использовать mxGetString
функция с многобайтовыми схемами кодирования. mxGetString
преобразует mxChar
данные к вашей пользовательской кодировке по умолчанию и копии преобразованные символы к целевому буферу. Однако необходимо вычислить размер целевого буфера. Для однобайтового кодирования размер буфера является количеством символов плюс 1
для пустого терминатора строки. Для многобайтового кодирования размер символа является одним или несколькими байтами. Некоторые опции для вычисления buffer size должны переоценить сумму (вычисление номера времен символов максимальное количество байтов, используемых схемой кодирования), анализировать строку, чтобы определить точный размер, используемый каждым символом или использовать сторонние буферные библиотеки строки. После этого вычисления добавьте 1
для пустого терминатора строки.
Когда вы передаете символьный массив MEX-функции, это - mxArray
из типа mxChar
. Если вы вызываете функцию C, чтобы управлять строкой, сначала преобразовать данные в тип C char
использование mxArrayToString
или mxGetString
функции.
Если ваш файл MEX создает струну до и возвращает данные в MATLAB, используйте mxCreateString
функционируйте, чтобы скопировать струну до в mxChar
массив.
Предположим, что ваш файл MEX берет символьный вход, изменяет его и возвращает результат. Поскольку файл MEX ввел параметры (prhs
массив), только для чтения, необходимо задать отдельный выходной параметр, чтобы обработать модифицированную строку.
MathWorks® рекомендует, чтобы функции файла MEX уничтожили свои собственные временные массивы и освободили их собственную динамически выделенную память. Функция, которую вы используете, чтобы выпустить память, зависит от того, как вы используете буфер строки и что функционирует, вы используете, чтобы создать буфер.
Если вы вызываете эту функцию | Выпустите память Используя эту функцию |
---|---|
Любая строковая функция перечислена здесь | Не уничтожайте
|
|
|
| При использовании |
|
|
| 'none'. Функция создает указатель на |