我正在使用一個函數庫,其中有很多函數可以寫入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