最新数据保存在txt的文件头位置,而不是追加文件尾。
ofstream out(filename, ios::app);
if (out.is_open())
{
out.seekp(0,ios::beg);
out<<temp[17];
out<<" ";
for (int i = 0; i < 16; i++)
{
out<<temp[i];
out<<" ";
}
out<<"\n";
out.close();
}
5 个解决方案
#1
没有办法直接写…………
#2
没有直接的办法。
你可以先seek到文件尾,然后获取位置(实际上这一步是获取文件长度)
然后seek到文件头,申请和文件大小相同的内存空间,然后把文件内容全部读出来
然后seek到文件头,写入你要写入的部分
最后把刚刚“全部读出来”的给写回去。
你可以先seek到文件尾,然后获取位置(实际上这一步是获取文件长度)
然后seek到文件头,申请和文件大小相同的内存空间,然后把文件内容全部读出来
然后seek到文件头,写入你要写入的部分
最后把刚刚“全部读出来”的给写回去。
#3
所谓修改删除文件a某位置的内容,其实是读打开文件a,再将‘a中修改删除位置之前的内容+修改删除的内容+a中修改删除位置之后的内容’保存到文件b,关闭文件a,删除文件a,将文件b改名为与之前文件a相同的名字,仅此而已。
#4
那如果文件很大怎么办?
#5
参考http://download.csdn.net/detail/hare10/2534023
#1
没有办法直接写…………
#2
没有直接的办法。
你可以先seek到文件尾,然后获取位置(实际上这一步是获取文件长度)
然后seek到文件头,申请和文件大小相同的内存空间,然后把文件内容全部读出来
然后seek到文件头,写入你要写入的部分
最后把刚刚“全部读出来”的给写回去。
你可以先seek到文件尾,然后获取位置(实际上这一步是获取文件长度)
然后seek到文件头,申请和文件大小相同的内存空间,然后把文件内容全部读出来
然后seek到文件头,写入你要写入的部分
最后把刚刚“全部读出来”的给写回去。
#3
所谓修改删除文件a某位置的内容,其实是读打开文件a,再将‘a中修改删除位置之前的内容+修改删除的内容+a中修改删除位置之后的内容’保存到文件b,关闭文件a,删除文件a,将文件b改名为与之前文件a相同的名字,仅此而已。
#4
那如果文件很大怎么办?
#5
参考http://download.csdn.net/detail/hare10/2534023