使用对输入整数的文件输入

Using file input to input integers

本文关键字:输入 文件 整数      更新时间:2023-10-16

我在这里遇到困难,因为弄清楚为什么这个循环不会将整数从文本文件插入数组中。

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

由于while语句,成功读取的所有数字仅分配给a[0]。结果,a[0]的最终值是最后一个有效的输入,而未分配给a的任何其他元素。

您可以使用以下内容:

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

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

并将每个数字分配给a[i]。每次都有相同的数组元素。

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

当内部循环到达文件的末尾时,它将终止。然后,外部for循环将将i递增至1,再次迭代并运行内部循环。由于读取了整个文件,因此内部循环不会做任何事情。对于剩余的98个数组元素,它都不会做任何其他事情。

循环可能应该是:

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

请记住,当然,只有在文件中有100个整数时,这才能正常工作。