C++ 额外输出\我可以';我不知道为什么

C++ 额外输出\我可以';我不知道为什么,c++,struct,C++,Struct,我正在尝试将数据从文件读取到结构数组,然后打印它 #包括“stdafx.h” #包括 #包括 #包括 使用名称空间std; 结构匹配{ 字符串id; 字符串组1; 字符串组2; 字符串日期; 串时间; 弦乐团; }; void getmatches(){ int i=0; 常数int size=50; 结构匹配{ 字符串id; 字符串组1; 字符串组2; 字符串日期; 串时间; 弦乐团; }; match getmatches[100]; 流媒体秀; 打开(“matches.txt”); 而(!

我正在尝试将数据从文件读取到结构数组,然后打印它

#包括“stdafx.h”
#包括
#包括
#包括
使用名称空间std;
结构匹配{
字符串id;
字符串组1;
字符串组2;
字符串日期;
串时间;
弦乐团;
};
void getmatches(){
int i=0;
常数int size=50;
结构匹配{
字符串id;
字符串组1;
字符串组2;
字符串日期;
串时间;
弦乐团;
};
match getmatches[100];
流媒体秀;
打开(“matches.txt”);
而(!show.eof()&&i<10)
{
getline(show,getmatches[i].id);
getline(show,getmatches[i].team1);
getline(show,getmatches[i].team2);
getline(show,getmatches[i].date);
getline(show,getmatches[i].time);
getline(show,getmatches[i].联赛);
cout,你就是这样。为
匹配定义一个
操作符>

您的代码也存在其他问题。您已经定义了两次
struct match
。您的
getmatches[]
数组与它所属的函数具有相同的名称,请改用更唯一的名称。并且
getmatches()
有一个
void
返回值,但您正在尝试
返回一个(
void
)值,这不是必需的

请尝试以下方法:

#包括“stdafx.h”
#包括
#包括
#包括
使用名称空间std;
结构匹配{
字符串id;
字符串组1;
字符串组2;
字符串日期;
串时间;
弦乐团;
};
istream和operator>>(istream和in、match和m){
getline(in,m.id);
getline(in,m.team1);
getline(in,m.team2);
getline(年,月日);
getline(单位:m.time);
getline(英国,马联);
返回;
}

ostream&operatorwell事实上我知道,但是什么是替代品,为什么要提供额外的输出问题提供的是信息而不是解决方案
addNewMatch
似乎未使用,因此与问题无关。请尽量避免不必要的“噪音”在您发布的代码中,我们必须将代码读得最少。@seif410“这个问题给出的是信息,而不是解决方案”嗯?关于这个问题,最上面的答案是链接的问题,建议构造
while(!inStream.eof()){int data;inStream>>data;}
应该替换为
int data;while(inStream>>data){}
。这怎么不是解决方案呢?我链接的问题的答案解释了在循环中使用
stream.eof()
将导致循环运行的次数超过它应该运行的次数。你的循环运行了1次额外的时间,这就是为什么你会得到额外的输出。