试图将文件读入结构数组,但 for 循环仅显示第一个索引而其余索引为零?
Posted
技术标签:
【中文标题】试图将文件读入结构数组,但 for 循环仅显示第一个索引而其余索引为零?【英文标题】:Trying to read a file into a struct array, but for loop only displays the first index and the rest as zero? 【发布时间】:2019-04-28 02:04:02 【问题描述】:我的任务是将文件读入动态结构数组并操作数据。我需要它来显示所有团队名称以及他们的赢=输分数,但它似乎只显示第一行。我在文件中的读取方式有问题吗?
测试输入文件如下所示:
New England Patriots,3,13,0
Buffalo Bills,15,1,1
Carolina Panthers,9,7,1
Jacksonville Jaguars,10,6,1
Miami Dolphins,7,9,0
Green Bay Packers,11,5,1
San Francisco 49ers,4,12,0
但我的代码结果如下:
Team W-L
New England Patriots 3-0
0-0
0-0
0-0
0-0
0-0
0-0
包括:iostream、fstream、字符串
我的代码:
struct teamInfo
string teamName;
int win;
int loss;
int playoffs;
int winlossdiff;
;
void winloss( struct teamInfo *arr, int index)
int main()
teamInfo *arr;
char fileName[100];
int choice,size;
ifstream file;
file.clear();
cout<<"Please enter file name:";
cin>>fileName;
while(!fileName)
cout<<"Error. Enter valid file name:\n";
cin>>fileName;
file.open(fileName);
file>>size;
arr = new teamInfo[size];
for (int i =0; i<size; i++)
getline(file,arr[i].teamName,',');
file>>arr[i].win;
file>>arr[i].loss;
cout<<arr[i].loss;
file>>arr[i].playoffs;
file.close();
winloss(arr,size);
delete[] arr;
return 0;
void winloss( struct teamInfo *arr, int index)
cout<<"Team W-L\n";
for(int i=0; i <index; i++)
cout<< arr[i].teamName<<" "<<arr[i].win<<"-"<<arr[i].loss<<"\n"<<endl;
抱歉,如果格式奇怪,我是新人。
【问题讨论】:
【参考方案1】:在file>>arr[i].win
之后,流中的下一个字符是逗号,
。下一个操作 file>>arr[i].loss
然后失败,因为逗号不能被解析为整数的一部分。
【讨论】:
我明白了,谢谢!如果你不介意我问,你认为我应该怎么做?我尝试通过 getline 解析它,但它似乎只是跳过了一些团队以上是关于试图将文件读入结构数组,但 for 循环仅显示第一个索引而其余索引为零?的主要内容,如果未能解决你的问题,请参考以下文章
jQuery-UI对话框仅显示for循环的最后一次迭代[duplicate]