2016-11-30 53 views
-1

我被困在这里有困难搞清楚为什么这个循环没有将整数从文本文件插入到数组中。使用文件输入来输入整数

我有一个包含100个整数的文本文件,全部用空格分隔。我试图将这些整数插入到一个数组中。然而,当我输出,例如[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

内环将努力从文件中读取每一个数字。

然后将每个数字分配到a[i]。每次都是相同的数组元素。

在外循环的第一次迭代中,i为0,所以代码将读取文件中的每个数字,将每个数字分配给a[0]

当内部循环到达文件末尾时,它将终止。然后,外部for循环将递增i为1,再次迭代并运行内部循环。由于整个文件已被读取,内部循环将不会执行任何操作。对于阵列的其余98个元素,它都不会做任何事情。

循环可能应该是,简单地说:

for (int i = 0; i < 100; i++) 
     listFile >> a[i]; 

请记住,这将正常工作,当然,只有当是完全存在的文件中100个整数。

2

因为while声明,所有被成功读取的数字只分配到a[0]。因此,a[0]的最终值是最后一个有效输入,而没有任何内容被分配给a的任何其他元素。

您可以使用类似:

for (int i = 0; i < 100 && listFile >> individualNum; i++) 
{ 
    a[i] = individualNum; 
    cout << individualNum << ", "; 
}