私たちは整数のファイルを持っています。各行には整数があります。ファイルを調べ、最小と最大の整数を見つけなければなりません。何をすべきかはっきりしていますが、ファイルが空の場合に問題があります。ファイルの終わりのチェックが機能しません(C++)
#include <iostream>
#include <fstream>
using namespace std;
void calculateMinMax(ifstream& inputStream, int& minNum, int& maxNum)
{
string currLine;
if(inputStream.ios::eof()) // code never enters this, even if file is empty !???
{
throw "EmptyFileException";
}
int currNum;
inputStream >> minNum;
maxNum = minNum;
while(getline (inputStream, currLine))
{
inputStream >> currNum;
if(currNum > maxNum)
{
maxNum = currNum;
}
if(currNum < minNum)
{
minNum = currNum;
}
}
inputStream.close();
}
int main()
{
int currNum, minNum, maxNum;
ifstream inputStream("numberFile.txt");
try
{
calculateMinMax(inputStream, minNum, maxNum);
cout << "Min: " << minNum << endl;
cout << "Max: " << maxNum << endl;
}
catch(...)
{
cout << "File is empty" << endl;
}
return 0;
}
probelemは、私はファイルが空であるかどうかをチェックしてるの行にある:
は、ここに私のコードです。なぜそれが起こっているのか分かりません。空であっても例外なく実行されます。助言がありますか?
タイトルはあなたの課題ではなく、あなたの問題を記述するべきです。 – csmckelvey
http://stackoverflow.com/questions/2390912/checking-for-an-empty-file-in-c –
'std :: ifstream'は、明示的に指定しない限り、無効な入力に対して例外をスローしません。 –