2014-08-31 193 views
0

如何在不知道事先知道的長度的情況下編寫一系列數字(二進制​​)用臨時緩衝區使用ofstream寫入臨時緩衝區

我可以將數字序列寫入臨時緩衝區(例如buf.write()),確定緩衝區長度,然後將緩衝區複製到ofstream(例如ofs << buf)?

+0

你究竟在做什麼? – 0x499602D2 2014-08-31 15:45:24

+0

1.不可以。如果你不知道它的長度,你怎麼寫?是的。 – 2014-08-31 15:49:29

+0

1.將數據寫入緩衝區 - 2.確定緩衝區長度 - 3.將文件寫入長度 - 4.將數據寫入文件 – Midas 2014-08-31 16:00:29

回答

2

由於您正在以二進制模式寫入文件,請爲數量預留一個位置。

例如,讓我們有一個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)); 

您可以任何地方數量變量,只記得它的文件位置。完成後,尋找該位置並將其寫入。

+0

我會堅持這一點,謝謝 – Midas 2014-09-02 21:04:30

相關問題