0

当我阅读 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


        }
    }
4

3 回答 3

1

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

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

改变:

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

至:

   for(i = 0; i <=999 && !file.eof(); ++i)
于 2013-09-06T11:42:53.000 回答
0

您正在从包含明显少于 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);
    }
}
于 2013-05-03T15:04:53.960 回答
-3

如果我没记错的话, int 可以将数据保持在 -32768 到 32767 之间。因此,如果您的值大于该值(来自源文件),您将不会得到预期的结果。

顺便说一句,很高兴知道你得到了什么输出。

于 2013-05-03T14:44:52.443 回答