使用文件输入来输入整数

时间:2016-11-30 03:33:58

标签: c++ arrays

我陷入困境,无法弄清楚为什么这个循环没有将文本文件中的整数插入到数组中。

我有一个包含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";

2 个答案:

答案 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个整数时,这才能正常工作。