我终于想出了如何将一些特定格式的信息写入二进制文件,但现在我的问题是读回它并以原来的方式构建它。
这是我写入数据的函数:
void save_disk(disk aDisk)
{
ofstream myfile("disk01", ios::out | ios::binary);
int32_t entries;
entries = (int32_t) aDisk.current_file.size();
char buffer[10];
sprintf(buffer, "%d",entries);
myfile.write(buffer, sizeof(int32_t));
std::for_each(aDisk.current_file.begin(), aDisk.current_file.end(), [&] (const file_node& aFile)
{
myfile.write(aFile.name, MAX_FILE_NAME);
myfile.write(aFile.data, BLOCK_SIZE - MAX_FILE_NAME);
});
}
我最初创建它的结构以及我想将其加载回的结构如下组成。
struct file_node
{
char name[MAX_FILE_NAME];
char data[BLOCK_SIZE - MAX_FILE_NAME];
file_node(){};
};
struct disk
{
vector<file_node> current_file;
};
我真的不知道如何将其读回以使其以相同的方式排列,但无论如何这是我可悲的尝试(我只是试图扭转我为保存所做的事情):
void load_disk(disk aDisk)
{
ifstream myFile("disk01", ios::in | ios::binary);
char buffer[10];
myFile.read(buffer, sizeof(int32_t));
std::for_each(aDisk.current_file.begin(), aDisk.current_file.end(), [&] (file_node& aFile)
{
myFile.read(aFile.name, MAX_FILE_NAME);
myFile.read(aFile.data, BLOCK_SIZE - MAX_FILE_NAME);
});
}
^^ 这绝对是错误的。^^
我了解 ifstream 的基本操作,但实际上我所知道的只是在一个文本文件中读取它,任何比我有点迷茫的更复杂的东西。
有关如何阅读此内容的任何建议?