【发布时间】:2015-07-04 23:07:20
【问题描述】:
我必须创建一个程序,该程序接受 A 组文件中的字符串并将它们与 B 组的字符串进行比较,创建一个视频输出和与输出视频文件相等的结果。组文件的结构如下:Jhon Smith'\n'Fergus McDonald'\n'Elizabeth Harris'\n'。我有嵌套while循环的问题,最后一个检查A的名称是否等于B的名称似乎有效,但其他两个不是,第一次内部循环有效,但另一个无效,if条件似乎没有更多的工作,并在文件元素的数量中重复所有文件的名称,反之亦然,对于第二组嵌套的 while 循环,我不明白出了什么问题
#include <stdlib.h>
#include <string.h>
#include <iostream>
#include <fstream>
using namespace std;
int main() {
string As, Bs, Cs;
ifstream A("Group_A.txt");
ifstream B("Group_B.txt");
ofstream C("Result.txt");
if(!A)
{
cout<<"Group A does not exist!";
return -1;
}
if(!B)
{
cout<<"Group B does not exist!!";
return -1;
}
if(!C)
{
cout<<"Failed to create file!!";
return -1;
}
C<<"Elements in A but not in B:"<<endl;
while(getline (B,Bs))
{
while(getline (A,As))
{
if (As != Bs)
{
C<<As<<endl;
}
}
A.clear();
A.seekg(0);
}
A.close();
B.close();
C<<endl;
A.open("Group_A.txt");
B.open("Group_B.txt");
C<<"Elements in B but not in A:"<<endl;
while(getline (A,As))
{
while(getline (B,Bs))
{
if (Bs != As)
{
C<<Bs<<endl;
}
}
B.clear();
B.seekg(0);
}
A.close();
B.close();
C<<endl;
A.open("Group_A.txt");
B.open("Group_B.txt");
C<<"Elements present in both A and B:"<<endl;
while(getline (A,As))
{
while(getline (B,Bs))
{
if (As == Bs)
{
C<<Bs<<endl;
}
}
B.clear();
B.seekg(0);
}
A.close();
B.close();
C<<endl;
C.close();
ifstream res("Result.txt");
while(res >> Cs)
cout<<Cs<<endl;
system ("PAUSE");
return 0;
}
【问题讨论】:
-
什么是视频输出?
-
您应该使用比
A、B和C更具描述性的名称。 -
A 组文件字符串:Mario Franceschi Luigi Deluca Anita Sola B 组文件字符串:Mario Franceschi Enrico Santini Anita In Compagnia 输出视频:A 中的元素但 B 中没有元素:Luigi Deluca Anita Sola Mario Franceschi Luigi Deluca Anita Sola 马里奥弗朗切斯基 Luigi Deluca Anita Sola B 中的元素,但 A 中没有的元素:Enrico Santini Anita 在 Compagnia Mario Franceschi Enrico Santini Anita 在 Compagnia Mario Franceschi Enrico Santini Anita 在 Compagnia A 和 B 中都存在元素:Mario Franceschi
-
@Carcigenicate A 和 B 是要比较的组,C 是输出文件
-
Carcigenicate 的观点是没有必要有那个映射。 A、B 和 C 可以是输入 A、输入 B 和输出。不是世界上最好的名字,但至少读者可以一眼看出你想要做什么。您是否需要这些循环,如程序规范所要求的那样,还是可以用更有效的结构替换它们?
标签: c++ string file while-loop fstream