Noob在这里。我知道我不应该发布作业,但我不知道可能导致这个问题的原因。由于某种原因,这个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);
}
}