2009-10-13 68 views
6

我正在通過通常的C++/STL/iostream語法讀取二進制文件。 我正在將整個內容複製到一個動態分配的char數組中,至今爲止工作正常。memorystream - stringstream,string,others?

但是由於我想將部分內容作爲行的一部分傳遞給程序的另一部分,因此我認爲堅持使用流會更好/更容易,因爲我不想用cstring函數破解 指針。

我現在的問題是,我如何將讀取內容存儲在內存中。在一個stringstream?或在一個字符串? 哪個更適合?相互之間是否有優勢或劣勢?

在此先感謝!

+0

好吧,複製後很容易看到這個http://stackoverflow.com/questions/132358/how-to-read-file-content-into-istringstream 這(如果它是真的)還聲明stringstreams內部緩衝區是一個字符串(因此我猜的名字)。我怎麼能爲這個緩衝區保留字節 - 我沒有看到任何關於ctor的註釋或任何關於後備功能的信息... – didito 2009-10-13 18:53:43

回答

4

如果你想從它作爲一個流中讀取,你還不如直接從文件到字符串流閱讀:

std::stringstream data; 
data << input_file.rdbuf(); 

,上面寫着「INPUT_FILE」的全部內容複製到「數據」。您可以像讀取任何其他流一樣從中讀取數據。

+0

謝謝,已經得到了。 現在的問題是,在我的類中存儲stringstream作爲一種內存/字符緩衝區是否明智?或者我應該使用一個字符串? – didito 2009-10-13 19:23:21

+0

和std :: stringbuf呢? – didito 2009-10-13 19:25:32

+0

由於缺乏其他原因,我只是將字符串流存儲起來。 – 2009-10-13 19:43:19