C++写文件,如何使用追加的方式在文件头追加

时间:2022-08-22 09:59:45
想实现的目的:
最新数据保存在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到文件头,写入你要写入的部分
最后把刚刚“全部读出来”的给写回去。

#3


所谓修改删除文件a某位置的内容,其实是读打开文件a,再将‘a中修改删除位置之前的内容+修改删除的内容+a中修改删除位置之后的内容’保存到文件b,关闭文件a,删除文件a,将文件b改名为与之前文件a相同的名字,仅此而已。

#4


引用 2 楼 qq423399099 的回复:
没有直接的办法。
你可以先seek到文件尾,然后获取位置(实际上这一步是获取文件长度)
然后seek到文件头,申请和文件大小相同的内存空间,然后把文件内容全部读出来
然后seek到文件头,写入你要写入的部分
最后把刚刚“全部读出来”的给写回去。
那如果文件很大怎么办?

#5


参考http://download.csdn.net/detail/hare10/2534023

#1


没有办法直接写…………

#2


没有直接的办法。
你可以先seek到文件尾,然后获取位置(实际上这一步是获取文件长度)
然后seek到文件头,申请和文件大小相同的内存空间,然后把文件内容全部读出来
然后seek到文件头,写入你要写入的部分
最后把刚刚“全部读出来”的给写回去。

#3


所谓修改删除文件a某位置的内容,其实是读打开文件a,再将‘a中修改删除位置之前的内容+修改删除的内容+a中修改删除位置之后的内容’保存到文件b,关闭文件a,删除文件a,将文件b改名为与之前文件a相同的名字,仅此而已。

#4


引用 2 楼 qq423399099 的回复:
没有直接的办法。
你可以先seek到文件尾,然后获取位置(实际上这一步是获取文件长度)
然后seek到文件头,申请和文件大小相同的内存空间,然后把文件内容全部读出来
然后seek到文件头,写入你要写入的部分
最后把刚刚“全部读出来”的给写回去。
那如果文件很大怎么办?

#5


参考http://download.csdn.net/detail/hare10/2534023