C++ 使用Matio库将.mat文件中的字符串读入C++;
我使用MaTio库在我的C++代码中输入.Mat文件。 它可以很好地处理数值;但我在读取字符数组时遇到问题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 =
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数据)