Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторная работа 7new.rtf
Скачиваний:
3
Добавлен:
09.11.2019
Размер:
294.5 Кб
Скачать

Входные типы, определенные пользователем.

Так же, как и для вывода, Вы можете создать функции ввода для Ваших типов данных. Для структуры 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

Ход работы

  1. Ознакомиться с необходимым теоретическим материалом.

  2. Запустить Dev C++.

  3. Выбрать команду File->Close all для закрытия проекта по умолчанию.

  4. Выбрать команду File->Create->Project… В появившемся диалоговом окне выбрать на вкладке Basic.

  5. Также выбрать C-project (не С++!!!); Console Application и изменить имя проекта таким образом, чтобы он не содержал русских символов (только латинские и цифры) (глюк среды).

  6. В появившемся окне кода проконтролировать наличие тела основной функции.

  7. При желании использовать прекомпиляцию файлов заголовков по команде Project->Options… вкладка Compiler проверить установку параметра Generate Debug Information из набора Linker – он должен быт включен (Yes) для включения возможности отладки программы встроенным отладчиком.

  8. Выбрать команду File->Save all… и сохранить проект в своей рабочей папке в каталоге С:\Work. Не пытаться сохранять в папке по умолчанию для избежания нарушения прав доступа! Попытка сохранения проекта в папках с наличием символов не английского алфавита приведет к невозможности сборки исполняемого файла (глюк среды).

  9. В соответствии с вариантом задания составить и отладить программу.

  10. Оформить отчет.