Метод good
Метод good класса ios возвращает true,
если поток не имеет никаких ошибок и готов к дальнейшей работе,
и false в противном случае. Метод не принимает параметров.
Он проверяет сразу все флаги состояния потока: eofbit,
failbit и badbit. Если хотя бы один из них
установлен, метод вернет false.
Синтаксис
bool good() const;
Пример
Давайте проверим состояние потока cin после
успешного ввода числа:
#include <iostream>
using namespace std;
int main()
{
int num;
cin >> num;
if (cin.good())
{
cout << "Stream is good" << endl;
}
else
{
cout << "Stream has errors" << endl;
}
return 0;
}
Результат выполнения кода при вводе числа 5:
"Stream is good"
Пример
Давайте попробуем ввести строку вместо числа и проверим состояние потока:
#include <iostream>
#include <string>
using namespace std;
int main()
{
int num;
cin >> num;
if (cin.good())
{
cout << "Stream is good" << endl;
}
else
{
cout << "Stream has errors" << endl;
}
return 0;
}
Результат выполнения кода при вводе строки "abcde":
"Stream has errors"
Пример
Давайте проверим состояние потока вывода cout
после вывода строки:
#include <iostream>
using namespace std;
int main()
{
cout << "abcde" << endl;
if (cout.good())
{
cout << "Output stream is good" << endl;
}
else
{
cout << "Output stream has errors" << endl;
}
return 0;
}
Результат выполнения кода:
"abcde"
"Output stream is good"