LINUX.ORG.RU

C++ iostream::failbit


0

0

#include <sstream>
#include <iostream>
using namespace std;
main()
{
cin.exceptions(iostream::failbit);
int i;
try
{
while(!cin.eof())
{
cin>>i;
cerr << i<<endl;
i+=i;
}
}
catch(iostream::failure e)
{
cout <<e.what() << endl;
}
cerr << i << endl;
}
почему на C-d вылитает по exceptin?

anonymous

iostream::failbit - флаг, при котором ошибкой считается даже конец файла.

Лучше код переделать примерно так:

#include <sstream>
#include <iostream>
#include <stdexcept>

using namespace std;
main()
{
	int i=0;
	try
	{
		string s;
		while(getline(cin,s))
		{
			if(!(istringstream(s.c_str())>>i))
			   throw runtime_error("invalid input");
			cout << i << endl;
			i+=i;
		}
	        cout << i << endl;
	}
	catch(runtime_error& e)
	{
		cerr <<e.what() << endl;
	}
	return 0;
}

kosmonavt
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.