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