首页 新闻 会员 周边 捐助

给定一个文件,读取该文件,将文件中的数据复制一份,以追加的方式写入到该文件中。看看错在哪儿?

0
悬赏园豆:5 [已关闭问题] 关闭于 2014-07-06 11:43

题目是:给定一个文件,读取该文件,将文件中的数据复制一份,以追加的方式写入到该文件中。我写的程序,实现了读取该文件的数据,并以追加方式写到本文件(给定文件)中,但是复制无限次数据进去了,这个要怎么修改?以下代码运行正常无误。谢谢指点!

 

#include <fstream> 

#include <string> 

#include <iostream> 

using namespace std;

 int main() 

{    

   ifstream infile("d:\\workspace\\data.txt",ios::out); 

     ofstream outfile("d:\\workspace\\data.txt",ios::app); 

    string filename;   

    string line;     

   if(infile) // 有该文件 

    {       

       while (getline (infile, line)) // line中不包括每行的换行符    

        {        

           cout << line << endl;         

           outfile << line << endl; // 输入到2.txt中   

         }   

   }     

 else // 没有该文件   

   {         

  cout <<"no such file" << endl;    

   }   

 

   system("pause");    

   return 0; 

ccwRadar的主页 ccwRadar | 初学一级 | 园豆:97
提问于:2014-07-05 22:36
< >
分享
所有回答(2)
0

因为是以文件流的方式来读取的,那么当你每读取一行的时候,就会把这一行加到文件最后面,导致文件整体增加一行,这样的结果就是不管循环多少次,总是有n行数据等待读取,导致无限循环,无限复制

解决的思路有两个,一个是把需要读取的文件先复制一份出来,读取复制出来的这份,写入原文件,另一个就是先记录文件的大小/行数,等到原文件的内容都读取了一次就结束

诶碧司 | 园豆:1912 (小虾三级) | 2014-07-05 23:24

嗯,好的,非常感谢。但是感觉还是很复杂,能否有简单点的方法?

支持(0) 反对(0) ccwRadar | 园豆:97 (初学一级) | 2014-07-05 23:26

@王传传: 每一种方式都差不多,而且也算是比较简单的了

这里还有一个思路是先把读取的每一行保存到一个list里,读取完成后,再写入

不过这种方法不适合大文件

支持(0) 反对(0) 诶碧司 | 园豆:1912 (小虾三级) | 2014-07-06 11:37

@诶碧司: 嗯,此题已解!谢谢

支持(0) 反对(0) ccwRadar | 园豆:97 (初学一级) | 2014-07-06 11:40
0

此题本人已解决!!!

ccwRadar | 园豆:97 (初学一级) | 2014-07-06 11:42
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册