КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Закрытие файла
В классах файловых потоков имеется метод close, который опорожняет поток и закрывает закрепленный за потоком файл. Примеры: fin.close (); fout.close (); Предполагается, что деструктор файлового объекта (или его базового класса) автоматически закрывает файл. Примеры программ работы с файлами. Пример 1 Табулирование функции. Исходные данные размещаются в файле ish.dan, а результаты будут заноситься в файл rez.dan. # include < iostream. h > # include < fstream. h > # include < math. h > # include < stdlib. h > void main () { ifstream fin (“ist. dan”); if (fin) { cout << “не открылся файл ish. dan” <<’\ n ‘; exit (1); } ofstream fout (“rez. dan”); double x, y, xn, dx, xk; fin >>xn>>dx>>xk; fout << “xn=” <<xn<<” dx=” <<dx<<“ xk = “<<xk<<’ \ n ‘; for (x = xn; x <= xk; x += dx) { y = exp (-x); fout << “ x = “ <<x<< ” y = “<< y << ‘ \ n’; } fin. close (); fout. close (); } Пример 2 Постановка задачи. Описать класс «матрица». Предусмотреть функцию-член для ввода элементов матрицы из выходного файла, дружественную функцию для их сложения и член-функцию для занесения результирующей матрицы в файл результатов. Количество строк и столбцов считать заведомо известными. # include < iostream. h > # include < fstream. h > # include < stdlib. h > # define N 2 # define M 3 class matr { float x [ N ] [ M ]; public: void vvod (char * S); void vivod (char * S); friend matr operator + (matr & a, matr & b); }; void matr:: vvod (char * S) { ifstream ifs (S); if (ifs) { cout << “Не открылся файл” << S << ‘ \ n ‘; exit (1); } for (int i = Ø; i < N; i + +) for (int j = Ø; j < M; j + +) ifs >> x [ i ][ j ]; } void matr:: vivod (char * S) { ofstream ofs (S); for (int i = Ø; i < N; i ++) for (int j = Ø; j < M; j ++) ofs <<x [ i ][ j ]; } matr operator + (matr & a, matr & b) { matr z; for (int i = Ø; i < N; i ++) for (int j = Ø; j < M; j ++) z. x [ i ] [ j ] = a. x [ i ] [ j ] = b. x [ i ] [ j ]; return z; } void main () { matr v, w, q v. vvod (“v. dan”); w. vvod (w. dan”); q = v + w; q. vivod (“q. dan”); } Матрицы v и w записаны соответственно в файлах v.dan и w.dan. Результирующая матрица q заносится в файл q.dan.
24.5 Перегрузка операций сдвига для файлового ввода/вывода Осуществляется подобно рассмотренному ранее расширению потоков для типов, определяемых пользователем с использованием дружественных функций. Их заглавия имеют вид: friend ifstream & operator >> (ifstream & ifs, имя класса & имя объекта); friend ofstream & operator << (ofstream & ofs, имя класса & имя объекта);
Пример. Условия задачи такие же, как и в предыдущем примере, но складываемые матрицы находятся в одном файле v hod. dan. Пусть конкретно находится серия матриц v [ 2 ] [ 3 ] и w [ 2 ] [ 3 ]. Их элементы последовательно записаны в файле v hod. dan. Например, в файле v hod. dan имеются следующие числа: 1 2 3 4 5 6 -1 -2 -3 -4 -5 -6 Первые две строки – элементы матрицы v, а вторые – матрицы w. # include < iostream. h > # include < fstream. h > # include < stdlib.h > # define N 2 # define M 3 class matr { float x [ N ] [ M ]; friend ifstream & operator >> (ifstream & ifs, matr & x); friend ofstream & operator << (ofstream & ofs, matr & a); friend matr operator + (matr & a, matr & b); }; ifstream & operator >> (instream & ifs, matr & x) { for (int I = Ø; I < N; I ++) for (int j = Ø; j < M; j ++) ifs >>x. x [ I ] [ j ]; / * Допускается совпадение символических имен элементов данных и параметров * /. return ifs; //Не забывать! } ofstream & operator << (ofstream & ofs, matr & a) { for (int I = Ø; I < N; I ++) for (int j = Ø; j < M; j ++) ofs << a. x [ I ] [ j ]; return ofs; } matr operator + (matr & a, matr & b) { matr v; for (int I = Ø; I < N; I ++) for (int j = Ø; j < M; j ++) v. x [ I ] [ j ] = a. x [ I ] [ j ] + b. x [ I ] [ j ]; return v; } void main () { matr w, v; ifstream fvh (“v hod. dan”); fvh >> v >> w; // * Дважды вызывается оператор >>. Первой вводится матрица v, а за ней w */ matr q; q = v + w; //вызывается оператор + (). ofstream viv (“q. dan”); viv << q; //Вывод q в файл q.dan. //Вызывается оператор << (). }
Дата добавления: 2015-06-27; Просмотров: 310; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |