写入现有二进制文件的中间 C++

2024-01-20

我正在尝试打开一个二进制文件进行写入而不擦除内容。但我不想写eof。我想写入文件中的特定位置。

这是一个小例子:

ofstream out("test.txt", ios::binary | ios::app);
for(int i = 0; i < 100; i++)
    out.put('_');
out.write("Hallo", 5);
out.close();

ofstream out2("test.txt", ios::binary | ios::app);
out2.seekp(10);
out2.write("Welt", 4);
out2.close();

如果使用应用程序,搜索不起作用。如果不使用应用程序打开文件,则会删除数据。有人知道答案吗?


尝试第二次过载seekp,它允许您提供偏移量和方向,这可能是您案例中文件的开头(即ios_base::beg)。当然,这假设您知道自己在做什么,并且您想要做的就是覆盖现有的字符数。

编辑:这是完整的工作示例:

#include <iostream>
#include <fstream>

using namespace std;
int main()
{
  {
    ofstream out("test.txt", ios::binary);
    for(int i = 0; i < 100; i++)
      out.put('_');
    out.write("Hallo", 5);
  }

  {   
    fstream out2("test.txt", ios::binary | ios::out | ios::in);
    out2.seekp(10, ios::beg);
    out2.write("Welt", 4);
  }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

写入现有二进制文件的中间 C++ 的相关文章

随机推荐