- •Основные теоретические сведения Объявление базового класса
- •Конструкторы и деструкторы
- •Объявление производных классов
- •Перегрузка операций
- •Ключевое слово this
- •Операторы new и delete.
- •Потоки Выходной поток
- •Встроенные типы.
- •Форматированный вывод.
- •Манипуляции.
- •Определенный пользователем вывод.
- •Входные типы, определенные пользователем.
- •Простой файл Ввод/Вывод.
- •Ход работы
- •Задание
- •Варианты задания (лр№3)
- •Литература
Входные типы, определенные пользователем.
Так же, как и для вывода, Вы можете создать функции ввода для Ваших типов данных. Для структуры info, определенной выше, оператор >> может быть перегружен:
istream& operator >> (istream& s, info& m);
{
s >> m.name >> m.val >> m.units;
return s;
}
(В реальной программе Вы, конечно, добавите код для обработки ошибок ввода). Для чтения входной строки, подобной "capacity 1.25 liters", используйте
cin >> m;
Простой файл Ввод/Вывод.
Класс ofstream наследует операции вывода из ostream, а ifstream наследует операции ввода из istream. Они предоставляют констракторы и функции-элементы для создания файлов и обработки ввод/вывод. Вы должны включить fstream.h во все программы, использующие эти классы. Рассмотрим пример, который копирует файл FILE.IN в файл FILE.OUT:
#include fstream.h
...
char ch;
ifstream fl("file.in");
if (!f1) errmsg("нельзя открыть файл 'file.in' для ввода"); ofstream f2("file.out");
if (!f2) errmsg ("нельзя открыть файл 'file.out' для вывода"); while (f2 && f1.get(ch) ) f2.put(ch);
Примечание. Заметим, что iostream.h в Borland C++ автоматически включается в fstream.h.
Заметим, что если констракторы для ifstream или ofstream недоступны при открытии заданных файлов, устанавливается соответствующее состояние ошибки для потока.
Констракторы позволяют Вам объявить файл потока без указания имени файла, позже Вы можете связать поток с каким-либо файлом:
ofstream ofile; // создает поток файла вывода
...
ofile.open("payroll"); // ofile связывается с файлом "payroll"
ofile.close(); // закрыть поток ofile
ofile.open("employee"); //ofile можно использовать снова
По умолчанию файл открывается в текстовом режиме. Это означает, что при вводе последовательность возврат каретки/перевод строки преобразуется в символ \n. При выводе производится обратное преобразование. Эти преобразования не производятся в двоичном режиме. Режим файла устанавливается с помощью необязательного третьего параметра функции open, выбранного из следующей таблицы:
Режимы файлов.
Режим |
Действие |
ios::app |
добавление данных - всегда пишет в конец файла |
ios::ate |
переходит на конец файла при открытии |
ios::in |
открывает на ввод (по умолчанию для ifstream) |
ios::out |
открывает на вывод (по умолчанию для оfstream) |
ios::binary |
открывает файл в двоичном режиме |
ios::trunc |
удаляет содержимое, если файл существует (подразумевается для ios::out и, если не заданы ни ios::atе, ни ios::app) |
ios::nocreate |
если файл не существует, open с ошибкой |
ios::noreplace |
если файл существует, open для выходного файла с ошибкой, если не заданы ate или app |
Ход работы
Ознакомиться с необходимым теоретическим материалом.
Запустить Dev C++.
Выбрать команду File->Close all для закрытия проекта по умолчанию.
Выбрать команду File->Create->Project… В появившемся диалоговом окне выбрать на вкладке Basic.
Также выбрать C-project (не С++!!!); Console Application и изменить имя проекта таким образом, чтобы он не содержал русских символов (только латинские и цифры) (глюк среды).
В появившемся окне кода проконтролировать наличие тела основной функции.
При желании использовать прекомпиляцию файлов заголовков по команде Project->Options… вкладка Compiler проверить установку параметра Generate Debug Information из набора Linker – он должен быт включен (Yes) для включения возможности отладки программы встроенным отладчиком.
Выбрать команду File->Save all… и сохранить проект в своей рабочей папке в каталоге С:\Work. Не пытаться сохранять в папке по умолчанию для избежания нарушения прав доступа! Попытка сохранения проекта в папках с наличием символов не английского алфавита приведет к невозможности сборки исполняемого файла (глюк среды).
В соответствии с вариантом задания составить и отладить программу.
Оформить отчет.