Ifstream不会读取所有整数

ifstream wont read all integer

本文关键字:整数 读取 Ifstream      更新时间:2023-10-16

当我阅读TestData.txt文件时,它给了我错误的输出。我做错了什么?我使用int数组,所以我可以在将数据保存到数组后进行合并排序。

TestData.txt
-------------------
31791   564974  477059  269094  972335
739154  206345  634644  227684  398536
910177  507975  589785  67117   395140
598829  372499  364165  450187  996527
700285  263407  918021  661467  457544
656297  846316  221731  240676  68287
913 141702  845802  477617  109824
{
int myArray[1000];
     int i;
    //reading givin data 
    const char* filename= "TestData.txt";   
    ifstream file(filename);
    if(file.is_open())
    {
        for(i = 0; i <=999; ++i)
        {
            file >> myArray[i];//storing data to array

        }
    }

需要检查您是否ifstream是end of file,在这种情况下,您从文件绑定中获得垃圾值。

只要修改一下,代码就可以了。

改变:

   for(i = 0; i <=999; ++i)

:

   for(i = 0; i <=999 && !file.eof(); ++i)

从文件中读取1000个实体,其中包含的整数明显少于1000个。数组的第一个值必须是正确的,但是在到达文件末尾之后,操作符>>将不会准备好任何东西。

例如,下面是一种写法:

const char* filename= "TestData.txt";   
std::vector<int> myArray;
std::ifstream file(filename);
if(file.is_open())
{   
    int v;
    while(file >> v) {
        myArray.push_back(v);
    }
}

int如果我没有错,可以保持数据从-32768到32767。因此,如果你有比这更大的值(你有,从你的源文件),你不会得到你期望的结果。

顺便说一句,如果你能知道你得到了什么输出,那就太好了。