2010-10-19 64 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));