如何从2个不包含';我没有一双 P> >今天,我一直在尝试制作一个C++程序,它打开包含2个数字的TXT文件,读取它们,试图找出在另一个文件中是否有一个数字没有对(文件A中有123个,文件B中有123个)。

如何从2个不包含';我没有一双 P> >今天,我一直在尝试制作一个C++程序,它打开包含2个数字的TXT文件,读取它们,试图找出在另一个文件中是否有一个数字没有对(文件A中有123个,文件B中有123个)。,c++,C++,所以在1个文件中我有数字 123 122 121 120 101 102 103 123 在另一个文件中我有数字 123 122 121 120 101 102 103 123 当我运行程序时,第三个文件中的输出是 123 123 123 我希望看到的地方 122 121 120 101 102 103 任何帮助都将不胜感激。:) #包括 #包括 #包括 使用名称空间std; int main() { 字符串行1、行2、行3; ifile1; ifile2; ifile3;

所以在1个文件中我有数字

123
122 
121 
120
101
102
103
123
在另一个文件中我有数字

123
122 
121 
120
101
102
103
123
当我运行程序时,第三个文件中的输出是

123
123
123
我希望看到的地方

122
121
120
101
102
103
任何帮助都将不胜感激。:)

#包括
#包括
#包括
使用名称空间std;
int main()
{
字符串行1、行2、行3;
ifile1;
ifile2;
ifile3;
气流;
offile.open(“lista3.txt”);
iffile3.open(“lista3.txt”);
iffile1.open(“lista1.txt”);
iffile2.open(“lista2.txt”);
if(iffile1.is_open()&&iffile2.is_open()&&iffile3.is_open())
{
while(getline(iffile1,line1)&&&!iffile1.eof())
{
while(getline(iffile2,line2)&&&!iffile2.eof())
{
如果(第1行==第2行)
继续;
其他的
{

offile您可以将每个文件中的所有元素读入2
std::set
s:

std::set<int> n1;
std::set<int> n2;
int i;

while (iffile1 >> i)
  n1.insert(i);

while (iffile2 >> i)
  n2.insert(i);
std::设置n1;
std::设n2;
int i;
而(iffile1>>i)
n1.插入(i);
而(iffile2>>i)
n2.插入(i);
然后将集合之间的对称差异输出到输出文件:

std::set_symmetric_difference(n1.begin(), n1.end(),
                              n2.begin(), n2.end(),
                              std::ostream_iterator<int>(offile, "\n");
std::set_symmetric_difference(n1.begin(),n1.end(),
n2.begin(),n2.end(),
std::ostream_迭代器(offile,“\n”);


如果不能保证每个文件中的元素都是唯一的,则可以在计算对称差之前将文件内容读入
std::vector
s,并对向量进行
std::sort

可以将每个文件中的所有元素读入2
std::set
s:

std::set<int> n1;
std::set<int> n2;
int i;

while (iffile1 >> i)
  n1.insert(i);

while (iffile2 >> i)
  n2.insert(i);
std::设置n1;
std::设n2;
int i;
而(iffile1>>i)
n1.插入(i);
而(iffile2>>i)
n2.插入(i);
然后将集合之间的对称差异输出到输出文件:

std::set_symmetric_difference(n1.begin(), n1.end(),
                              n2.begin(), n2.end(),
                              std::ostream_iterator<int>(offile, "\n");
std::set_symmetric_difference(n1.begin(),n1.end(),
n2.begin(),n2.end(),
std::ostream_迭代器(offile,“\n”);


如果不能保证每个文件中的元素是唯一的,那么在计算对称差之前,您可以将文件内容读入
std::vector
s和
std::sort
向量。

是否必须保留文件中元素的顺序?听起来只有在原始顺序为无关。@如果不需要保存数字的顺序,只需让它将第二个文件中没有成对的数字写入第三个文件即可。您不需要在这些行中额外检查eof:
while(getline(iffile1,line1)&&&!iffile1.eof()
。是否必须保留文件中元素的顺序?听起来只有在原始顺序不相关的情况下才需要@NathanOliver。@如果不需要保存数字的顺序,只需让它将第二个文件中没有成对的数字写入第三个文件即可。不需要对这些lin中的eof进行额外检查es:
while(getline(iffile1,line1)和&!iffile1.eof())。非常感谢,我真的是在努力地做这件事……LukPaChanic没有问题,我建议看看他们会有很大的帮助。如果你能解决问题的话,你可以考虑接受这个答案。非常感谢,我真的是在努力地做这件事……LukPaChanic没有问题,我建议看看他们会有很大的帮助。如果你能解决问题,你可以考虑接受这个答案。