我正在使用一个函数库,其中有很多函数可以写入FILE
,但似乎并不方便将相同数据转储到内存中的对象。有什么办法可以创建一个将数据存储在内存中而不是写入磁盘的对象(或覆盖它) - 我想避免一次又一次地打开/写入/读取文件的性能。不写入磁盘的C++文件
UPDATE:每罗布的建议,试图字符串流:
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'(http://www.cplusplus.com/reference/iostream/stringstream/) 。 'stringstream'不会解决OP的问题,因为他被绑定到'FILE'。如果他可以修改他的库,他可以使用'stringstream'。 – 2011-05-02 17:56:44
@Rob - 我的目标是避免修改库的来源(以避免升级时发生冲突等),但我确实有选择。我想我可能会采取这种方式,因为其他解决方案现在看起来比我的C技术更低级。 基本上,我需要替换或增加一个现在使用'fputc'的函数 - 我将使用'stringstream'中的'put'来代替,对吗? – 2011-05-02 18:28:09
不要害怕使用'fmemopen'或'open_memstream'。他们看起来像你的完美解决方案。但是,如果你确实想使用'stringstream',请看我的答案。 – 2011-05-02 19:04:42