题目是:给定一个文件,读取该文件,将文件中的数据复制一份,以追加的方式写入到该文件中。我写的程序,实现了读取该文件的数据,并以追加方式写到本文件(给定文件)中,但是复制无限次数据进去了,这个要怎么修改?以下代码运行正常无误。谢谢指点!
#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;
}
因为是以文件流的方式来读取的,那么当你每读取一行的时候,就会把这一行加到文件最后面,导致文件整体增加一行,这样的结果就是不管循环多少次,总是有n行数据等待读取,导致无限循环,无限复制
解决的思路有两个,一个是把需要读取的文件先复制一份出来,读取复制出来的这份,写入原文件,另一个就是先记录文件的大小/行数,等到原文件的内容都读取了一次就结束
嗯,好的,非常感谢。但是感觉还是很复杂,能否有简单点的方法?
@王传传: 每一种方式都差不多,而且也算是比较简单的了
这里还有一个思路是先把读取的每一行保存到一个list里,读取完成后,再写入
不过这种方法不适合大文件
@诶碧司: 嗯,此题已解!谢谢
此题本人已解决!!!