使用c ++使用同一类的另一个对象覆盖文件中的对象

时间:2015-06-22 09:06:31

标签: c++ file-handling

我编写了一个代码,其中我将信息保存到文件中以便稍后检索。有一项任务我需要用新对象覆盖文件中的对象(有点像更新保存的信息)。但是当我在更新后检索信息时,会打印旧信息。该对象未被覆盖。请验证我的错误。这是写入文件的代码片段:

fig = plt.figure()
sns.set_style("ticks")
g = sns.JointGrid(X, Y)
g.plot_marginals(sns.distplot, color=".5")
g.plot_joint(plt.hexbin, bins='log', gridsize=30, cmap=color, extent=[0, np.max(X), 0, np.max(X)])

P.S。从我读取文件并想要写回的指针是正确的。我通过打印指针来验证它们。我只是不明白为什么新对象没有保存在文件中。

HeaderInfo rx;   //This is the object which I want to write.
//headers is the pointer to file where all the objects are saved.
headers.read((char*)&rx , sizeof(HeaderInfo)); //First I read the old info from the file
headers.seekp(it->second->getHeaderLocation());  //go back to where the info was read from

//In the lines of code below, I modified the old information.
strcpy(rx.key,new_key.c_str());
rx.headerLocation = headers.tellp();
rx.dataSize = sizeof(HeaderInfo);
rx.freeSpace = 0;
rx.location =   it->second->getLocation();

//Now writing back the updated object to file.
writeEmptyHeader(rx , headers.tellp());

编辑: 这是writeEmptyHeader函数:

//This is the definition of HeaderInfo. It is basically a struct:
struct HeaderInfo{
    char key[MAX_KEY_LEN];
    long location;
    long headerLocation;
    long dataSize;
    long freeSpace;
};

P.S。:我知道名字看起来很模糊。我意识到,它确实是。但它只是将标题写入位置fptr的文件。我在调试代码时单独创建了这个函数,所以没有多想。忽略这个名字! :P

0 个答案:

没有答案