C++ 读写文件,要不重复地写,文件中每一行都是二进制序列,即0,1序列。

有一个文件file1.txt,文件中的每一行都是二进制序列,但是有重复,也就是说在file1.txt中可能存在两行或多行序列相同。要求:从file1.txt中按行读取文件(每一行都作为字符串存储),判断file2.txt中是否存在这一字符串,如果不存在,则写到file2.txt中。也就是要求从file1.txt中按行读取文件,然后不重复地存到file2.txt中。

方法和上面的差不多。
代码如下:
#include<iostream>
#include<fstream.h>
#include<string>
//using std::cout;
//using std::cin;
using std::string;
int main()
{
ifstream ifs("file1.text");
char p[100]={0};
char q[100]={0};
string str1,str2;
fstream ofs("file2.text",ios::in|ios::out|ios::app);
for(int i=0;!ifs.eof();i++)
{
ifs.getline(p,100);
str1=p;
int m=0; //定义m,如果m为1,则file1遍历file2时有相同的
for(int j=0;!ofs.eof();j++)
{

ofs.getline(q,100);
str2=q;
if(str1==str2) //
m=1;
}
ofs.clear(); //清除eof标志位
if(0==m) //m为0时向文件file2输入
ofs<<'\n'<<p;
ofs.seekp(0,ios::beg);
}
return 0;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-04-30
如果不考虑效率的话,很简单。
用binary方式打开文件(重要!因为默认是文本模式)
用string存储每一行,用string::getline( )读取文件中的一行,然后遍历file2.txt,看有无相同行,若有则file1.txt读下一行,若无则添加到file2.txt。
注意添加到file2.txt时应当关闭文件,然后重新打开,打开方式是写binary,同时制定是app添加到末尾,不然会覆盖源文件。over

参考资料:sername

相似回答