如何使用 mwArray 将字符串向量发送到 MATLAB 编译的 DLL

How to send vector of string to MATLAB compiled DLLs, using mwArray?

本文关键字:MATLAB 编译 DLL mwArray 何使用 字符串 向量      更新时间:2023-10-16

页面在mwArray类描述了创建字符串数组的mwArray单元的构造函数: mwArray(mwSize num_strings, const char** str) .我有一个动态填充的字符串向量。我已经将vector<string>转换为char**,并尝试使用此数据制作mwArray。但是,构造函数签名具有const char**,因此无法将char**转换为const char**

否则如何将字符串向量设置为mwArray单元并发送到MATLAB DLL?

您可以将向量转换为常量字符**。这是一个这样的函数。

const char** convert(vector< string > &v)
{
    int kk;
    const char** ppChar = new const char *[v.size()];
    for (kk = 0; kk < v.size(); kk++)
    {
        ppChar[kk] = const_cast< char* >(v[kk].c_str());
    }
    return ppChar;
 }

要测试它:

#include <iostream>
#include <vector>
#include <string>
using namespace std;
int main()
{
    int k;
    vector< string > v;
    v.push_back("This is string");
    v.push_back("Another string a bit longer");
    v.push_back("my string");
    const char** AA = convert(v);
    for (k = 0; k < v.size(); k++)
    {
        cout << AA[k] << endl;
    }
    return 0;
}