0
ofstream ofs1("file1.dat", ios::out | ios::binary);
unsigned char data[64] = {0};
ofs1.write((char*) &data, sizeof(data));
if (some_condition)
{
ofstream ofs2("file2.dat", ios::out | ios::binary);
ofs2 << ofs1.rdbuf();// This does not work.
}
unsigned char more_data[32] = {1};
ofs1.write((char*) &more_data, sizeof(more_data));
與預期的一樣,file1.dat在執行代碼後大小爲96字節。但是,file2.dat是0字節,我期望它是64字節。顯然ofstream::rdbuf()
總是空的,還是不應該這樣使用?爲什麼ofstream :: rdbuf()總是空的?
實際用途:使用相同標題(例如調色板)寫入多個文件的應用程序。在這個代碼示例中,data
(調色板)的內容是靜態的,但它顯然可以被更復雜的計算所取代,這對於每個輸出文件都是重複過度的。
'這不行。'它是'ofstream',底層緩衝區無法讀取。 – user657267
但是,在刷新緩衝區內容之前,必須有一些方法來複制緩衝區內容? – Midas
@Midas:它不打算從中讀取。僅僅存在緩衝區和知識的內容就是不應該暴露的實現細節。您可以編寫自己的包裝緩衝區,以記錄發送給它的信息。 –