2010-10-19 65 views
0

我需要在C++中模擬分頁文件系統。需要在頁面(文件的塊)中存儲多個元組,每個頁面末尾的目錄指向頁面上每個元組的偏移量。我還需要在元組中存儲可變長度屬性。使用STL容器並將其序列化到磁盤是最好的方法嗎?使用fstream對象在C++中模擬分頁文件系統

感謝

什麼我找換 我創建了一個文件中的一些細節 - 比如用4096bytes塊employee.day。 我需要在每個塊中存儲元組,每個塊的末尾有一個目錄,存儲每個元組的地址和偏移量。 每次我插入一個新元組時,我都需要找到一個具有足夠可用空間的頁面,並將其插入頁面並更新頁面末尾的目錄。 我的元組可以是可變長度的,所以我還需要將元組的長度存儲在文件中。在程序的運行過程中,我將表的模式加載到向量中。我正在尋找一些關於如何使用fstream中的讀寫操作來實現將元組存儲到頁面中的一些想法,

+0

您是否希望能夠修改文件而不用重寫它? 'fstream'在哪裏發揮作用? – Potatoswatter 2010-10-19 01:09:16

+0

聽起來像使用內存映射文件會更容易。不過,你會做得很花哨。 – 2010-10-19 01:28:03

回答

1

沒有任何更多細節,我想說做一個vector的頁面,seekp/seekg到正確的位置,然後序列化/反序列化頁面

file << v.size(); 
file.write(&v[0], v.size() * sizeof(my_tuple)); 

file >> page_size; 
v.resize(page_size); 
file.read(&v[0], v.size() * sizeof(my_tuple));