【发布时间】:2012-04-10 04:25:53
【问题描述】:
我正在用 C++ 编写一个二进制文件,我在其中遍历到一个特定位置,需要用新的位置覆盖内容。我知道整数大小的内容,所以我跟踪位置并重写它。似乎,ofstream 写入函数插入或附加变量。有没有办法,我可以重写,而不是在文件中追加或插入
long word = sizeof(int) + sizeof(long) + sizeof(long);
std::ofstream file_write(filename, std::ios::out|std::ios::binary);
file_write.seekp(word);
long pos = file_write.tellp();
file_write.write((char *)&some_integer,sizeof(int));
file_write.close()
//some other location
file_write.seekp(pos);
file_write.write((char *)&some_other_integer,sizeof(int));
//这里 some_integer 应该被 some_other_integer 覆盖。有办法吗?
会是这样的
值1,值2,值3
我也许可以用值 5 替换值 2。
那么它应该看起来像
值1,值5,值3
【问题讨论】:
-
如果您只是试图覆盖文件中的单个值,您显示的代码将起作用。您确定您显示的代码实际上代表您正在使用的代码吗?您确定代码不起作用吗?
-
对不起,我想它是这样工作的,你是对的,我很困惑,有一个不同的问题。抱歉发帖的人,有没有办法删除帖子?
-
嘿埃里克,它不是那样工作的。我删除它之前的信息并推送它之后的信息。有关更多代码,请参阅此链接。 stackoverflow.com/questions/10096196/…
标签: c++ file binaryfiles ofstream