在文件开头添加数据

时间:2012-01-31 07:44:08

标签: c++ c

  

可能重复:
  Delete a Line from a file in C Language
  In C++, what is the proper way to insert a line at the beginning of a text file?

如何使用c / c ++编程在文件开头添加数据? 我试过以下代码:

fstream file;  

stmt.open(L"d:\\xyz.txt",ios::in|ios::out|ios::app);

但是这会附加在文件的末尾。

3 个答案:

答案 0 :(得分:9)

你做不到。

只使用标准C或C ++,如果您想以原子方式执行此操作,则必须将所有内容写入新文件(即新数据加旧文件),然后将文件移过。如果你想冒风险,你可以读取一个数据块,并在开头写入新内容并逐块向上移动数据(但如果有什么东西打扰你,你就破坏了文件)。

如果您可以访问内存映射,则可以尝试不同的方法:内存映射整个文件,memmove按所需的偏移量,并将memcpy新数据放入初始段。

答案 1 :(得分:3)

你可以这样做:

  • 创建新文件
  • 在顶部添加新数据
  • 附加旧文件中的数据

rename中有cstdio,但我确信还有一些特定于C ++的内容。

答案 2 :(得分:1)

据我所知,您打开文件的唯一选择是读取,写入和追加。因此,您应该阅读整个文件内容(假设它不是一个巨大的文件),打开临时文件进行写入,然后写下您想要的内容,然后写入您从旧文件中读取的缓冲区。

你也可以尝试在w +模式下打开文件并尝试将光标定位在文件的开头,但我不知道这是否会起作用