Работа №12. Потоки ввода-вывода — КиберПедия 

Эмиссия газов от очистных сооружений канализации: В последние годы внимание мирового сообщества сосредоточено на экологических проблемах...

Организация стока поверхностных вод: Наибольшее количество влаги на земном шаре испаряется с поверхности морей и океанов (88‰)...

Работа №12. Потоки ввода-вывода

2021-12-07 37
Работа №12. Потоки ввода-вывода 0.00 из 5.00 0 оценок
Заказать работу

Воспользуйтесь в качестве заготовки программой из работы №9 (индивидуальное задание С). Удалите из класса описание перегруженного оператора сложения. Модифицируйте функции Draw 1() и Draw 2() так, чтобы первая выводила в окно заданную фигуру толстым цветным пером, а вторая – тонким черным. Объявите в качестве глобальных переменных четыре указателя на объекты вашего класса. В части а работы будет использоваться одна пара этих указателей; в части б – другая.

Включите в приложение обработку сообщения WM _ CREATE. В функции OnCreate () создайте два объекта класса (используя объявленные ранее указатели): один – вызовом конструктора с некоторым разумным набором аргументов, а второй – “пустой” (с помощью конструктора по умолчанию). В функции OnPaint () последовательным вызовом для этого объекта обеих функций Draw () выведите в окно два изображения объекта. Убедитесь в том, что изображения геометрически совпадают.

а. Запись объекта на диск и чтение с диска традиционными файловыми функциями Windows. Включите в функцию OnCreate () предложения создания файла, записи в него содержимого вашего объекта, сброса указателя в файле в начало файла и чтения данных с диска в созданный заранее второй (неинициализированный) объект. В функции OnPaint () выведите (разными функциями Draw ()) изображения обоих объектов – исходного и заполненного данными с диска. Убедитесь в совпадении изображений.

б. Запись объекта на диск и чтение с диска с помощью потоков ввода-вывода. Подключите к программе заголовочный файл < fstream. h >. Создайте в функции OnCreate () третий объекта вашего класса с отличным набором аргументов и четвертый – “пустой”. Создайте поток файлового вывода – объект класса ofstream, указав в аргументах конструктора новое имя файла. Вызовом функции write () для объекта потока запишите в файл содержимое объекта. В качестве аргументов этой функции указывается адрес объекта, приведенный к типу char *, и размер объекта в байтах. Закройте поток вывода.

Создайте поток файлового ввода – объект класса ifstream. Вызовом функции read () для этого объекта прочитайте данные с диска в четвертый (неинициализированный) объект. В функции OnPaint () выведите в окно изображения обоих объектов. Убедитесь в совпадении изображений.

Работа №13. Перегрузка в прикладном классе операторов
вставки и извлечения

Выполняя запись и чтение с помощью потоков ввода-вывода, удобно вместо относительно громоздких предложений с потоковыми функциями write () и read () использовать операторы вставки в поток (<<) и извлечения из потока (>>). Однако эти операторы C++, перегруженные для потоков, по умолчанию осуществляют преобразование числовых данных в символьные и наоборот. Для того, чтобы осуществлять запись и чтение числовых данных (что обычно и требуется в прикладных программах обработки результатов экспериментов или моделирования), необходимо перегрузить операторы вставки и извлечения применительно к составу прикладного класса.

Воспользуйтесь в качестве заготовки текстом предыдущей работы. Включите в состав вашего класса перегруженные операторы << и >>, объявив их дружественными операторными функциями.

В файле с исходным текстом программы определите содержимое перегруженных операторных функций. Каждая из них должна посредством функций write () и read () посылать в поток или извлекать из потока последовательно все члены вашего класса. Не забудьте, что в качестве аргументов этих функций указываются адреса пересылаемых данных, приведенные к типу char *, и их размер в байтах.

Как и в предыдущей работе, создайте в функции OnCreate () объект вашего класса с некоторым набором аргументов и второй, “пустой” объект. Создайте поток файлового вывода – объект класса ofstream, указав в аргументах конструктора новое имя файла. Перешлите содержимое объекта вашего класса в файл, используя оператор вставки в поток (<<). Закройте поток вывода.

Создайте поток файлового ввода – объект класса ifstream. С помощью операторы извлечения из потока (>>) прочитайте данные с диска в неинициализированный объект вашего класса. В функции OnPaint () выведите в окно изображения обоих объектов. Убедитесь в совпадении изображений.


Поделиться с друзьями:

Индивидуальные и групповые автопоилки: для животных. Схемы и конструкции...

Механическое удерживание земляных масс: Механическое удерживание земляных масс на склоне обеспечивают контрфорсными сооружениями различных конструкций...

Своеобразие русской архитектуры: Основной материал – дерево – быстрота постройки, но недолговечность и необходимость деления...

Семя – орган полового размножения и расселения растений: наружи у семян имеется плотный покров – кожура...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.008 с.