我有一個已經創建的巨大文件。我需要在文件起始處寫入一些數據,同時保留文件的其他內容。以下代碼破壞了現有文件。任何人都可以用正確的方法幫助我。C++:使用fstream修補二進制文件
ofstream oFile(FileName,ios::out|ios::binary);
oFile.seekp(0);
oFile.write((char*)&i,sizeof(i));
oFile.write((char*)&j,sizeof(i));
oFile.close();
編輯: 基本上我想在不同的位置,包括開始覆蓋現有文件的一些字節。我知道要寫入的位置的字節地址。我的寫作不會改變文件大小。
我需要做一些等同於以下代碼的工作:
oFile.seekp(0);
執行寫入前:
int mode = O_RDWR;
int myFilDes = open (FileName, mode, S_IRUSR | S_IWUSR);
lseek (myFilDes, 0, SEEK_SET);
write (myFilDes, &i, sizeof (i));
write (myFilDes, &j, sizeof (j));
是否打算將新字節附加到文件的前面或覆蓋它? – GWW 2011-03-07 00:37:50
您將需要在十六進制編輯器中進行測試,然後在其工作時將其傳遞給C++。 – Gareve 2011-03-07 00:39:19
我需要覆蓋它 – Arpit 2011-03-07 00:43:06