Рассмотренные нами программы не контролировали наличия ошибок при вводе-выводе, например: наличие файла при вводе или успешное выполнение операции при выводе в файл. Для контроля за наличием ошибок можно использовать функцию fail(). Если в процессе файловой операции ошибок не было, то эта функция возвратит ложь (0). Однако если встретилась ошибка, функция fail() возвратит истину. Например:
ifstream input_file("FILENAME.DAT");
if (input_file.fail())
{
cerr << "Ошибка открытия FILENAME.EXT" << endl;
exit(1);
}
Следующая программа TEST_ALL.CPP использует функцию fail() для проверки различных ошибочных ситуаций. Например:
#include <iostream.h>
#include <fstream.h>
void main(void)
{
char line[256] ;
ifstream input_file("BOOKINFO.DAT") ;
if (input_file.fail()) cerr << "Ошибка открытия BOOKINFO.DAT" << endl;
else
{
while ((! input_file.eof()) && (! input_file.fail()))
{
input_file.getline(line, sizeof(line)) ;
if (! input_file.fail()) cout << line << endl;
}
}
}