我有一个以二进制格式存储整数的文件。我正在用 C++ 编写一个函数,它接受 int 数据并将其插入到文件中的特定位置。
void AddData(int position, int data);
- position 是必须插入数据的索引。
- data 是要插入的 int 值。
代码
void AddData(int position, int data)
{
fstream os;
char buff[4096];
cnt1 = position;
cnt2+=(data_cnt-cnt1); // data_cnt is global var to cout the no. of data items
os.open("edata.dat", ios::out | ios::in | ios::binary );
os.seekg(0); // start from beg
os.seekg(cnt1*sizeof(int)); // move to position at which data has to be inserted
os.read(reinterpret_cast<char*>(buff), cnt2*sizeof(int)); // read rest of file
os.seekg(cnt1*sizeof(int)); // move back to previous position
cout << os.tellg();
os.write( reinterpret_cast<char*>(&data), sizeof(int) ); //add data
os.write(reinterpret_cast<char*>(buff), cnt2*sizeof(int)); //write back the read data
data_cnt++;
}
第一次调用函数时,显示数据项添加了两次。第二次调用函数时,tellg() 显示-1。
想不通,怎么回事?