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



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文件格式进行反向工程。

最新更新