使用fstream对象在C ++中模拟分页文件系统

时间:2010-10-19 01:00:54

标签: c++

我需要用C ++模拟分页文件系统。需要在页面(文件块)中存储多个元组,每个页面末尾的目录指向页面上每个元组的偏移量。我还需要在元组中存储可变长度属性。使用STL容器并将其序列化到磁盘是最好的前进方式吗?

由于

关于我正在寻找的更多细节 - 我创建了一个文件 - 比如employee.day,块数为4096bytes。 我需要在每个块中存储元组,每个块的末尾都有一个目录,用于存储每个元组的地址和偏移量。 每次插入新元组时,我都需要找到一个有足够可用空间的页面并将其插入页面并更新页面末尾的目录。 我的元组可以是可变长度的,所以我还需要在文件中存储元组的长度。我在程序运行期间将表的模式加载到向量中。我正在寻找一些关于如何使用fstream中的读写操作实现将元组存储到页面中的想法,

1 个答案:

答案 0 :(得分: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 ) );