MATLAB允许通过封闭源代码库将变量保存到文件中,例如公开以下函数:
FILE *matGetFp(MATFile *mfp);
MATFile *matOpen(const char *filename, const char *mode);
C/C++中有没有一种方法可以让我将要写入磁盘的内容重定向到字符串中?
是否可以重定向FILE
指针?不幸的是,"构造函数"只接受文件名,而不是文件指针,在这种情况下,我会选择管道。。。
基本上,我想实现类似于python为StringIO
类提供的功能,能够序列化对象,而不需要磁盘I/O。
如果这不完全符合SO,我很抱歉,但我没能找到任何关于这方面的信息,并猜测如果不能做到这一点,我可以在这里快速得到一个"不可能"。。。
总之,没有
正如文档所说:"MATFile是一种C语言不透明的类型。"在封面下,你想重新分配/截取的东西可能是一个原始的C文件指针、一个HDF5对象的句柄,甚至可能是其他东西。根据MAT文件模式(版本4或更早、版本7.3或其他版本),将使用不同的实现部分,从而导致不同的序列化。
我不知道你为什么想知道会被写入磁盘并将其存储为字符串,但你总是可以将其写入磁盘,然后使用低级文件I/O例程读取字节:fopen()
、fread()
等。但到那时,你基本上正在对.mat文件格式进行反向工程。