我陷入困境,无法弄清楚为什么这个循环没有将文本文件中的整数插入到数组中。
我有一个包含100个整数的文本文件,全部用空格分隔。我试图将这些整数插入数组。但是当我输出时,例如a [2],它输出0,使我相信数字没有被插入到数组中。
listFile.open("unsortedlist.txt");
cout << endl << "Unsorted list = ";
for (int i = 0; i < 100; i++)
{
while (listFile >> individualNum )
{
a[i] = individualNum;
cout << individualNum << ", ";
}
}
cout << "\n" << a[1] << "\n";
答案 0 :(得分:2)
由于while
语句,所有成功读取的数字仅分配给a[0]
。因此,a[0]
的最终值是最后一个有效输入,而没有任何内容分配给a
的任何其他元素。
您可以使用以下内容:
for (int i = 0; i < 100 && listFile >> individualNum; i++)
{
a[i] = individualNum;
cout << individualNum << ", ";
}
答案 1 :(得分:0)
内部循环将努力读取文件中的每个数字。
并将每个号码分配给a[i]
。每次都是相同的数组元素。
在外循环的第一次迭代中,i
为0,因此代码将读取文件中的每个数字,并将每个数字分配给a[0]
。
当内循环到达文件末尾时,它将终止。然后,外部for
循环将i
增加到1,再次迭代,并运行内循环。由于已经读取了整个文件,因此内部循环不会执行任何操作。对于阵列的其余98个元素,它都不会做更多的事情。
循环应该是,简单地说:
for (int i = 0; i < 100; i++)
listFile >> a[i];
请记住,只有当文件中只有100个整数时,这才能正常工作。