0
如何在不知道事先知道的長度的情況下編寫一系列數字(二進制)用臨時緩衝區使用ofstream寫入臨時緩衝區
我可以將數字序列寫入臨時緩衝區(例如buf.write()
),確定緩衝區長度,然後將緩衝區複製到ofstream
(例如ofs << buf
)?
如何在不知道事先知道的長度的情況下編寫一系列數字(二進制)用臨時緩衝區使用ofstream寫入臨時緩衝區
我可以將數字序列寫入臨時緩衝區(例如buf.write()
),確定緩衝區長度,然後將緩衝區複製到ofstream
(例如ofs << buf
)?
由於您正在以二進制模式寫入文件,請爲數量預留一個位置。
例如,讓我們有一個32位的數量值。我們可以寫在文件的開頭:
uint32_t number_size = 0U;
// Open output file for read & write.
// Reserve space for the quantity by writing dummy value.
output_file.write((char *)&number_size, sizeof(number_size));
// Perform calculations & writing to file, incrementing "number_size"
// Write the number size to the top of the file:
output_file.seekp(0, SEEK_BEG);
output_file.write((char *)&number_size, sizeof(number_size));
您可以任何地方數量變量,只記得它的文件位置。完成後,尋找該位置並將其寫入。
我會堅持這一點,謝謝 – Midas 2014-09-02 21:04:30
你究竟在做什麼? – 0x499602D2 2014-08-31 15:45:24
1.不可以。如果你不知道它的長度,你怎麼寫?是的。 – 2014-08-31 15:49:29
1.將數據寫入緩衝區 - 2.確定緩衝區長度 - 3.將文件寫入長度 - 4.將數據寫入文件 – Midas 2014-08-31 16:00:29