2010-10-24 51 views
1

嗨,我要覆蓋我已經設置了位置上的特定文件的內容(對象),但它總是添加到文件覆蓋數據使用fstream的

代碼

int InputIO::editPatient(int location,Obj P){ 

     int positon=location*sizeof(P); 
     f.open("File.dat",ios::in|ios::out|ios::app|ios::binary|ios::ate); 
     f.seekp(0,ios::beg); 
     f.seekp(positon,ios::cur); 
     f.write((char*)&P,sizeof(Movie)); 
     f.close(); 

     return 0; 



     } 
結束一個C++文件

回答

1

就解決了這個需要刪除的ios ::應用程序(追加)追加總是添加到文件

5

結束不要使用ios::app標誌(代表追加)。當您使用此標誌時,它會阻止您在打開文件之前讀取或寫入文件中存在的任何內容 - 只能將新內容添加到最後(並且由於您以讀寫模式打開,所以您可以重新讀取你寫的內容並重寫它,但是在它之前你仍然無法獲取數據)。