Манипуляторы Предназначение Ввод-вывод
boolalpha Устанавливает флаг boolalpha Ввод-вывод
dec Устанавливает флаг dec Ввод-вывод
endl Выводит символ перехода на новую Вывод
строку и очищает буфер
ends Выводит нулевой байт Вывод
fixed Устанавливает флаг fixed Вывод
flush Очищает буфер Вывод
hex Устанавливает флаг hex Ввод-вывод
internal Устанавливает флаг internal Вывод
left Устанавливает флаг left Вывод
noboolalpha Сбрасывает флаг boolalpha Ввод-вывод
noshowbase Сбрасывает флаг showbase Вывод
noshowpoint Сбрасывает флаг showpoint Вывод
noshowpos Сбрасывает флаг showpos Вывод
noskipws Сбрасывает флаг skipws Ввод
nounitbuf Сбрасывает флаг unitbuf Вывод
nouppercase Сбрасывает флаг uppercase Вывод
oct Устанавливает флаг oct Ввод-вывод
resetiosflags (fmtflags f) Сбрасывает флаги, указанные параметром f Ввод-вывод
right Устанавливает флаг right Вывод
scientific Устанавливает флаг scientific Вывод
setbase(int base) Задает основание системы счисления, Ввод-вывод
указанное параметром base
setfill(int ch) Задает символ-заполнитель ch Вывод
setiosflags(fmtflags f) Устанавливает флаги, указанные параметром f Ввод-вывод
setprecision(int p) Задает количество цифр после десятичной точки Вывод
setw(int w) Задает ширину поля, указанную параметром w Вывод
showbase Устанавливает флаг showbase Вывод
showpoint Устанавливает флаг showpoint Вывод
showpos Устанавливает флаг showpos Вывод
skipws Устанавливает флаг skipws Ввод
unitbuf Устанавливает флаг unitbuf Вывод
uppercase Устанавливает флаг uppercase Вывод
ws Игнорирует ведущие разделители Ввод
Пример 1. Рассмотрим пример, иллюстрирующий применение манипуляторов.
#include <iostream>
#include <iomanip>
using namespace std;
int main(){
cout << hex << 100 << endl;
cout << setfill(‘?’) << setw(10) << 2343.0;
return 0;
}
Результат работы программы приведен ниже.
??????2343
Пример 2.
#include <iostream>
using namespace std;
int main()
{
cout.setf(ios : : showpoint);
cout.setf(ios : : showpos);
cout << 100.0; // Выводим число +100.0
return 0;
}
Пример3. Получение данных от пользователя на языке С++
// программа предлагает пользователю ввести длину в футах,
// после чего переводит полученное значение в метры и сантиметры
# include <iostream>
# include <iomanip>
int main ()
{
float feet, meters, centimeters; /* объявление переменных */
cout << " Введите количество футов";
cin >> feet;
// в выражениях используются операторы << (для вывода) и >> (для ввода) классов ostream и istream,
// подключаемых в файле IOSTREAM. Оба эти оператора являются перегруженными и
// поддерживают ввод/вывод данных всех базовых типов.
while (feet > 0) {
centimeters = feet * 12 * 2.54;
meters = centimeters/100;
cout << setw(8) << setprecision(2)
<< setiosflags(ios : : fixed) << feet
<< " (футы) равняется \n"; // файл IOMANIP содержит объявления
cout << setw(8) // трех функций, являющихся членами класса
<< meters << " (метры) \n"; // ios (базовый в иерархии классов ввода/вывода):
cout << setw(8) // setw() задает минимальную ширину (в символах) выводимого поля
<< centimeters << " (сантиметры) \n"; // setprecision() задает число цифр после
cout << " \nВведите другое значение \n"; // десятичной точки
cout << " (0 - конец программы): "; // функция setw() определяет формат вывода только
cin >> feet; // следующей за ней переменной, после чего все установки сбрасываются
} // в отличие от нее функция setiosflags() вызывается один раз, устанавливая флаг
cout << ">>> До свидания! <<<"; // fixed, который задает вывод чисел с плавающей запятой в
// фиксированном формате, т. е. Без экспоненты.
return(0);
}
Практическая часть
Изучите методические указания.
2. Напишите программу, которая находит значение выражения в соответствии с одним из вариантов заданий, для входных данных, определенных пользователем. Программа должна выводить на экран вычисляемое выражение со значениями исходных переменных и результат в различных форматах: десятичном, восьмеричном, шестнадцатеричном и научном. Исходные переменные имеют типы: x - double, y - int, z - long double.
Варианты заданий
1 .
2 .
3 .
4 .
5 .
6 .
7 .
8 .
3. Оформите отчет по выполнению практической работы, в котором отразите: номер работы, тему, цель, задание; текст программы на языке С++; результаты выполнения программы; краткие выводы, ответы на вопросы.
Вопросы для контроля
1 Какой флаг позволяет игнорировать разделители при вводе данных из потока?
2 Какой флаг позволяет выравнивать строки вывода по левому краю?
3 Какой флаг позволяет выводить десятичную точку и незначащие нули при отображении десятичных чисел?
Литература
1 Павловская Т.А. С/С++. Программирование на языке высокого уровня. – СПб. : Питер, 2011. – 461 с.
2 Шилдт Г. Полный справочник по С++, 4-е издание. : Пер. с англ. – М. : Издательский дом «Вильям», 2012. – 800 с.
Практическая работа №9
Тема: Составление программ линейной структуры
Цель: Освоить способы программирования линейного алгоритма в среде Borland C++.
Оборудование и программное обеспечение:
1 Персональный компьютер IBM PC/AT.
2 Операционная система Windows XP.
3 Среда программирования Borland C++.
Практическая часть