我正在使用一个库,它有很多写入
FILE
的函数,但没有一个方便地将相同数据转储到内存中的对象。是否有任何方法创建一个FILE
对象(或覆盖它),以将数据存储在内存中而不是写入磁盘 - 我想避免打开/写入/读取文件的性能损失。
更新:根据Rob的建议,尝试stringstream:
ss.put(c);
std::string myval = ss.str();
printf("Value: %s\n after writing: %i length %lu\n",myval.c_str(),c, myval.length());
但是,现在我试图从stringstream中获取数据(二进制)时遇到了困难 - 我该如何获取我一直添加的二进制数据?
std::stringstream
。stringstream
无法解决OP的问题,因为他被绑定在FILE
上。如果他可以修改他的库,他就可以使用stringstream
。 - Robᵩfputc
的函数 - 我将使用stringstream
中的put
代替,对吧? - jnpdxfmemopen
或open_memstream
。它们看起来是您的完美解决方案。但是,如果您确实想使用stringstream
,请参考我的答案。 - Robᵩmmap
等其他方法,但这也是我目前不太熟悉的事情! - jnpdx