在C / C ++中将文件指针重定向到字符串

时间:2013-12-02 16:29:47

标签: c++ python c matlab

MATLAB允许通过闭源库将变量保存到文件中,例如,公开以下功能:

FILE *matGetFp(MATFile *mfp);
MATFile *matOpen(const char *filename, const char *mode);

在C / C ++中是否有一种方法可以让我将写入磁盘的内容重定向到字符串中?

是否可以重定向FILE指针? 遗憾的是,“构造函数”只接受文件名,而不是Filepointer,在这种情况下,我已经去了管道......

基本上我想实现类似于python为StringIO类提供的东西,以便能够在不需要磁盘I / O的情况下序列化对象。

我很抱歉,如果这不完全符合SO,但我没有设法找到任何东西,并猜到我可以在这里快速“不可能”,如果这不能做到..

1 个答案:

答案 0 :(得分:1)

总之,没有。

正如the documentation所述:“MATFile是一种C语言的不透明类型。”在幕后,您要重新分配/拦截的东西可能是原始C文件指针,HDF5对象的句柄,甚至可能是其他东西。根据MAT文件模式(版本4或更早版本,7.3或更高版本或其他版本),将使用实现的不同部分,从而导致不同的序列化。

我不确定为什么你想知道写入磁盘并将其存储为字符串,但你总是可以将其写入磁盘,然后再读取字节中的字节使用低级文件I / O例程:fopen()fread()等。但到那时,您基本上正在对.mat文件格式进行逆向工程。