Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
В дополнение к перегрузке операторов вывода/ввода, вы можете создать свою подсистему ввода/вывода C++, определив, собственные функции-манипуляторы. Создание пользовательских манипуляторов позволяет объединить несколько отдельных действий по вводу/выводу в один манипулятор.
Рассмотрим процесс создания манипуляторов без параметров. Все манипуляторы без параметров для вывода имеют следующую форму:
ostream &имя_манипулятора (ostream &stream)
{
//Код программы
return stream;
}
Все манипуляторы без параметров для ввода имеют такую форму:
istream &имя_манипулятора (istream &stream)
{
//Код программы
return stream;
}
Манипулятор получает в качестве параметра ссылку на поток, для которого он создается, а возвращать должен этот поток.
Примеры:
1. Рассмотрим первый простой пример. В следующей программе создается манипулятор setup(), который устанавливает ширину поля вывода равную 10, точность равную 4 и символ заполнения *.
#include <iostream. h>
ostream &setup (ostream &stream)
{ stream. width(lO),-
stream. precision{4);
stream. fill('*');
return stream;
}
main()
{ cout << setup << 123.123456;
return 0;
}
Как можно заметить, setup используется в качестве части выражения ввода/вывода точно так же, как используются любые встроенные манипуляторы.
2. В этой программе создается манипулятор getpass(), который вызывает гудок динамика и, затем, предлагает ввести пароль:
#include <lostrearn.h>
#include <string.h>
istream &getpass (istream &istream) // Простой манипулятор ввода
{ cout << ' \a'; // гудок динамика
cout << "Введите пароль";
return stream;
}
main()
{ char pw[80];
do
{ cin >> getpass >> pw;
} while (strcmp(pw, "пароль"));
cout << "Пароль введен верно\n"
return 0;
}
4.2. ПОРЯДОК ВЫПОЛНЕНИЯ РАБОТЫ.
1. Изучить материал данного методического пособия, привлекая лекции и дополнительную литературу;
2. Разработать схемы алгоритмов и программу для обработки данных в соответствии с конкретным вариантом.
4.3. ВАРИАНТЫ ЗАДАНИЙ
1. Написать, используя флаги формата ios, программу вывода:
- величины 1000.5364 в 20-символьном поле, с выравниванием по левому полю, с двумя позициями после запятой и символом * в качестве символа заполнения;
- числа, вводимого с клавиатуры, в десятичной, шестнадцатеричной и восьмеричной системе счисления.
2. Используя условие задания 1, написать программу, применив манипуляторы ввода/вывода для форматирования информации.
3. Используя класс, который преобразует дюймы в мм (1 дюйм = 25,4 мм), создайте:
- функцию извлечения, предлагающую пользователю ввести число дюймов;
- функцию вставки для вывода на экран числа дюймов и мм.
class inches_to_mm{ double inches;
double mm;
public:
void set(double in) { inches = in;
mm=in * 25.4;
}
};
4. Дан класс:
class data { char str[9]; //дата представлена в виде строки “mm/dd/yy”
public: //добавить функции вставки и извлечения
};
Создайте для него собственные функции вставки для работы с потоками классов ostream/ofstream и извлечения для работы с потоками классов istream/ ifstream.
4.4. КОНТРОЛЬНЫЕ ВОПРОСЫ
1. Что такое поток? Стандартные потоки ввода/вывода.
2.
3.
4.
5.
ЛИТЕРАТУРА
1. Крячков А.В., Сухинина И.В., Томшин В.К
«Программирование на С и С++. Практикум» -
М.: «Горячая линия-Телеком», 2008. - 344 с.:ил.
2. Климова Л.М.
«Основы практического программирования на языке С++» -
М.: «Издательство ПРИОР», 2003. - 464 с.
3. Подбельский В.В., Фомин С.С.
«Программирование на языке Си: Учебное пособие» -
М.: «Финансы и статистика», 2003. – 600 с.: ил.
4. ШИЛДТ Г.
«С++. Базовый курс: пер. с англ. – СПб.» -
«BHV – Санкт-Петербург», 2005. – 512 с., ил.
5. ПАХОМОВ Б.И
«С/С++ и MS Visual C++2005 для начинающих: пер. с англ. – СПб.» -
«BHV – Санкт-Петербург», 2007. – 464 с., ил.
Дата публикования: 2015-02-22; Прочитано: 1638 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!