加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-16 05:51:35 所属栏目:百科 来源:网络整理
导读:我正在尝试打开二进制文件进行写入,而不会擦除内容.但我不想写信给eof.我想写入一个特定的文件位置. 这是一个小小的例子: ofstream out("test.txt",ios::binary | ios::app);for(int i = 0; i 100; i++) out.put('_');out.write("Hallo",5);out.close();ofs
我正在尝试打开二进制文件进行写入,而不会擦除内容.但我不想写信给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();

如果使用app,seek不行.如果不使用应用打开文件擦除数据.有人知道答案吗?

解决方法

尝试第二个重载的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);
  }
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读