C++ 使用Matio库将.mat文件中的字符串读入C++;

C++ 使用Matio库将.mat文件中的字符串读入C++;,c++,character,C++,Character,我使用MaTio库在我的C++代码中输入.Mat文件。 它可以很好地处理数值;但我在读取字符数组时遇到问题 int start[2]={0,0},stride[2]={1,1},edge[2]={1,1}; mat_t *mat; matvar_t *matvar, matvar1; mat = Mat_Open("test.mat",MAT_ACC_RDONLY); matvar = Mat_VarReadInfo(mat,"data"); matvar1 =

我使用MaTio库在我的C++代码中输入.Mat文件。 它可以很好地处理数值;但我在读取字符数组时遇到问题

  int   start[2]={0,0},stride[2]={1,1},edge[2]={1,1};
  mat_t  *mat;
  matvar_t *matvar, matvar1;

  mat = Mat_Open("test.mat",MAT_ACC_RDONLY);
  matvar = Mat_VarReadInfo(mat,"data");
  matvar1 = Mat_VarGetStructFieldByName(matvar,"name",0);
  char ptr[matvar2->dims[1]];
  edge[0] = matvar2->dims[0];
  edge[1] = matvar2->dims[1];
  Mat_VarReadData(mat,matvar2,ptr_string,start,stride,edge);
Mat_VarReadData将数据从Mat写入ptr_字符串,其中matvar2是指向name struct的指针


如前所述,这适用于数值;但是对于角色,我不理解所谓的角色。可能格式有误。

当频道是字符串列表时,这对我有效:

    mat_t* mat = Mat_Open(fileName, MAT_ACC_RDONLY);
    matvar_t* channels{};
    channels = Mat_VarRead(mat, (char*)"Channels");

    if (channels)
        {
            //print individual
            matvar_t** cells = static_cast<matvar_t**>(channels->data);
            printf("{\n");
            for (int i{}; i < channels->dims[1]; i++)
            {
                //Mat_VarPrint(cells[i], 1);
                std::cout << static_cast<char*>(cells[i]->data) << '\n';
            }
            printf("}\n");
            Mat_VarFree(channels);
        }
    Mat_Close(mat);
mat_t*mat=mat_Open(文件名,mat_ACC_RDONLY);
matvar_t*通道{};
信道=Mat_VarRead(Mat,(char*)“信道”);
中频(信道)
{
//打印个人
matvar\u t**单元=静态广播(通道->数据);
printf(“{\n”);
对于(inti{};idims[1];i++)
{
//Mat_VarPrint(单元格[i],1);
std::cout数据)