ノブはこちら。宿題を投稿するべきではないことはわかっていますが、何がこの問題を引き起こしているのかわかりません。何らかの理由で、この while ループは、終了する直前 (つまり、ファイルの終わりを読み取るとき) に std::bad_alloc 例外をスローします。8GB のシステムで 500 MB の RAM しか使用していないため、メモリの過剰使用ではないと確信しています。誰かが助けてくれたら、それは素晴らしいことです。なぜなら、私はこの問題を約 4 時間探し続けており、修正を見つけることができないからです。それはおそらくばかげたことですが、私には理解できません。
コードは次のとおりです。
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);
}
}