ifstream不会读取所有整数

时间:2013-05-03 14:40:53

标签: c++ fstream

当我读取TestData.txt文件时,它给了我错误的输出。我究竟做错了什么。我正在使用int数组,因此我可以在将数据保存到数组后执行MergeSort。

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


        }
    }

3 个答案:

答案 0 :(得分:1)

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

通过一次修改,代码就可以了。

变化:

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

为:

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

答案 1 :(得分:0)

您正在从文件中读取1000个内容,其中包含的内容明显少于1000个。 数组的第一个值必须正确,但在到达文件末尾后,运算符&gt;&gt;什么都不准备好。

例如,这里有一种写作方式:

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);
    }
}

答案 2 :(得分:-3)

int如果我没错,可以将数据从-32768保存到32767。 因此,如果您的值大于您(源文件中的值),则不会得到您期望的结果。

顺便说一下,知道你得到的输出会很高兴。