2

菜鸟在这里。我知道我不应该发布家庭作业,但我不知道是什么可能导致这个问题。出于某种原因,这个 while 循环在它退出之前(即,当它读取文件结尾时)抛出一个 std::bad_alloc 异常。它在 8GB 的​​系统上只使用 500 MB 的 RAM,所以我很确定这不是内存的过度使用。如果有人可以提供帮助,那就太好了,因为我一直在寻找这个问题大约四个小时,但找不到解决办法。这可能是一些愚蠢的事情,但我无法弄清楚。

这是代码:

temperatures_in >> low >> high;
tempMin=low;
tempMax=high;
getLocation(temperatures_in, location);

while(!temperatures_in.eof()){
    temperatures_out << left << setw(20) << location;
    temperatures_out << right << fixed << showpoint << setprecision(2) << setw(6) << low << setw(6) << high << endl;
    temperatures_in >> low >> high;
    getLocation(temperatures_in, location);
    if(low<tempMin){
        tempMin=low;
    }
    if(high>tempMax){
        tempMax=high;
    }
    cout << low << " " << tempMin << " " << high << " " << tempMax << " " << location;
}

此外,当我运行调试器时,它显示异常以某种方式在第 -1 行抛出(这甚至可能吗?),即使我已经测试了循环内外的输出并且它会在循环结束之前执行代码,但不是之后。

编辑:这是 getLocation() 函数:

void getLocation(ifstream &temperatures_in, string &location){
    char a;
    temperatures_in.get(a);
    while(a==' '){
        temperatures_in.get(a);
    }
    location="";
    while(a!='\n'){
        location+=a;
        temperatures_in.get(a);
    }
}
4

0 回答 0