当我读取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
}
}
答案 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。 因此,如果您的值大于您(源文件中的值),则不会得到您期望的结果。
顺便说一下,知道你得到的输出会很高兴。