Страница в класс mwArray описывает конструктор для создания ячейки mwArray массива строк как:
mwArray(mwSize num_strings, const char** str)
, У меня есть вектор строки, который был динамически заполнен. Я преобразовал vector<string>
в char**
и пытается сделать mwArray с этими данными. Тем не менее, подпись конструктора имеет const char**
, поэтому он не может конвертировать char**
в const char**
Как еще вектор строки может быть установлен в ячейку mwArray и отправлен в библиотеки MATLAB?
Вы можете конвертировать вектор в const char **. Вот одна из таких функций.
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;
}
Других решений пока нет …