C ++从文件开头清除/覆盖内容

时间:2018-09-04 12:54:02

标签: c++ fstream ifstream

我需要从文件开头擦除或覆盖(最好擦除)多个字节。首先将内容读入数据结构,然后再写入删除的新内容。

目前,我有读写部分。我该如何清除数据?询问您是否想知道其他事情。谢谢,对不起,英语不好:)

typedef struct header {
   char    version[5]; //Offset 0, length 5, Archiver version
   int     files_no;   //Offset 5, length 8, Number of files in the archive
   char    desc[256];  //Offset 13, length 256, Archive description, Header size 296??

   header() {
       strcpy(version, "0.20");
       strcpy(desc, "THIS IS A DESCRIPTION FIELD WITH 256BYTE!");
   }
}archiveHeader;

int archive(char *argv[], int argc) {
   archiveHeader   archive_struct_write, archive_struct_read;
   string          output = argv[argc-1]; output += ".n0b"; //Name of file to modify
   int             write_counter = 1;

   ofstream file_write(output.c_str(), ios::binary | ios::app);
   file_write.seekp(0, file_write.beg);

   ifstream file_read(output.c_str(), ios::binary);
   file_read.read((char*)&archive_struct_read, sizeof(archive_struct_read)); //Read existing beginning data

   //Steps for erasing the read stuff goes here.    

   write_counter = archive_struct_read.files_no;
   archive_struct_write.files_no = write_counter + 1;

   file_write.write((char*)&archive_struct_write, sizeof(archive_struct_write)); //New beginning data written
   file_read.close();
   file_write.close();

   write_counter++;

   return 0;
}

编辑:不能选择在开始字节之后缓冲所有内容并写入新文件,该文件的大小最高可达到GB。谢谢!

0 个答案:

没有答案